simplipy-f64-edge
Rules only in rules_real.json (rejected in float64, e.g. because of overflow), real flavour; and exact ground identities found only there.
Case set ba9dc4def822
sp-acj4-0-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0
Lean proof: included
(case sp-acj4-0-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0") (var x real) (ask (= (acosh (cosh x)) (abs x))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.cosh_ofReal, AE.acosh_ofReal (Real.one_le_cosh r), AE.abs_ofReal, ← Real.cosh_abs, Real.arcosh_cosh (abs_nonneg r)]"))
sp-acj4-115-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)
Lean proof: included
(case sp-acj4-115-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -4))) (ask (= (/ (log x) -4) (log (surd x -4)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-4:ℂ) = ((-4:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-116-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)
Lean proof: included
(case sp-acj4-116-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -6))) (ask (= (/ (log x) -6) (log (surd x -6)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-6:ℂ) = ((-6:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-130-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-130-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f130w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-151-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0
Lean proof: included
(case sp-acj4-151-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0") (var x real) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f151w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-154-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0
Lean proof: included
(case sp-acj4-154-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0") (var x real) (ask (= (acos (cos (sin x))) (abs (sin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sin_ofReal, AE.cos_ofReal, AE.acos_ofReal (Real.neg_one_le_cos _) (Real.cos_le_one _), AE.abs_ofReal, ← Real.cos_abs, Real.arccos_cos (abs_nonneg _) (by linarith [abs_le.mpr ⟨Real.neg_one_le_sin r, Real.sin_le_one r⟩, Real.pi_gt_three])]"))
sp-acj4-156-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0
Lean proof: included
(case sp-acj4-156-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0") (var x real) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f156w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-180-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0
Lean proof: included
(case sp-acj4-180-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0") (var x real) (assume (!= (sinh (acosh x)) i)) (assume (!= (sinh (acosh x)) (- i))) (assume (nonzero (cosh (acosh x)))) (ask (= (atan (sinh (acosh x))) (asin (tanh (acosh x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f180w2 | exact AE.w2_f180_hI | exact AE.w2_f180_hnI | exact AE.w2_f180_atanD | exact AE.w2_f180_cosh | exact AE.w2_f180_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-183-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0
Lean proof: included
(case sp-acj4-183-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0") (var x real) (assume (nonzero x)) (assume (!= (sinh (log x)) i)) (assume (!= (sinh (log x)) (- i))) (assume (nonzero (cosh (log x)))) (ask (= (atan (sinh (log x))) (asin (tanh (log x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f183w2 | exact AE.w2_f183_hI | exact AE.w2_f183_hnI | exact AE.w2_f183_atanD | exact AE.w2_f183_cosh | exact AE.w2_f183_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-189-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-189-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0") (var x real) (assume (!= (cos (asin x)) 1)) (assume (!= (cos (asin x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (asin x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.cos_eq, AE.cos_asin]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-190-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0
Lean proof: included
(case sp-acj4-190-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0") (var x real) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); have hS : 1 < Real.sqrt (1 + r ^ 2) := (Real.lt_sqrt zero_le_one).2 (by have := pow_pos (abs_pos.2 hr) 2; rw [sq_abs] at this; linarith); have hS0 : 0 < Real.sqrt (1 + r ^ 2) := (by linarith); refine ⟨⟨⟨⟨AE.atan.D_ofReal r, trivial⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.atan_ofReal, AE.cos_ofReal, Real.cos_arctan, AE.atanh_ofReal (by have := one_div_pos.2 hS0; linarith) ((div_lt_one hS0).2 hS), AE.inv_ofReal, AE.asinh_ofReal, AE.abs_ofReal, AE.artanh_eq_abs_arsinh hr]"))
sp-acj4-191-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-191-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0") (var x real) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.sin_eq, AE.sin_acos]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-203-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0
Lean proof: included
(case sp-acj4-203-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f203w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-229-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0
Lean proof: included
(case sp-acj4-229-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0") (var x real) (assume (nonzero (pow pi x))) (ask (= (/ (pow pi x)) (pow (/ pi) x))) (expect true) (lean-proof "refine ⟨by simp_all [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.inv_pow_base Real.pi_pos x"))
sp-acj4-234-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0
Lean proof: included
(case sp-acj4-234-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0") (var x real) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (ask (= (/ (pow x x)) (pow (/ x) x))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f234w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-241-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3
Lean proof: included
(case sp-acj4-241-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3") (var x real) (assume (nonzero (surd x 3))) (assume (nonzero x)) (ask (= (log (surd x 3)) (/ (log x) 3))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f241w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-247-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9
Lean proof: included
(case sp-acj4-247-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9") (var x real) (assume (nonzero (surd x 9))) (assume (nonzero x)) (ask (= (log (surd x 9)) (/ (log x) 9))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f247w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-260-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-260-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f260w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-261-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0
Lean proof: included
(case sp-acj4-261-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0") (var x real) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h1.1.1, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cosh_ofReal, AE.inv_ofReal, AE.log_ofReal (Real.cosh_pos r).le, AE.log_ofReal (inv_nonneg.2 (Real.cosh_pos r).le), Real.log_inv]; push_cast; ring"))
sp-acj4-266-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-266-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f266w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-267-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-267-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f267w2 | exact AE.w2_cos_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-29-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3
Lean proof: included
(case sp-acj4-29-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3") (var x real) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f29w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-3-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0
Lean proof: included
(case sp-acj4-3-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0") (var x real) (ask (= (asinh (sinh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sinh_ofReal, AE.asinh_ofReal, Real.arsinh_sinh]"))
sp-acj4-343-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0
Lean proof: included
(case sp-acj4-343-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0") (var x real) (ask (= (pow (/ pi) x) (pow pi (- x)))) (expect true) (lean-proof "refine ⟨by simp [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.pow_inv_base Real.pi_pos x"))
sp-acj4-344-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0
Lean proof: included
(case sp-acj4-344-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0") (var x real) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (assume (or (nonzero x) (> (re (- x)) 0))) (ask (= (pow (/ x) x) (pow x (- x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f344w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-378-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)
Lean proof: included
(case sp-acj4-378-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -5) (exp (/ x -5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-5, by norm_num⟩ : ∃ n : ℤ, (-5:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-5:ℂ) = ((-5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-5:ℤ):ℂ) = ((r * ((-5:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-380-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)
Lean proof: included
(case sp-acj4-380-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -7) (exp (/ x -7)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-7, by norm_num⟩ : ∃ n : ℤ, (-7:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-7:ℂ) = ((-7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-7:ℤ):ℂ) = ((r * ((-7:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-392-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0
Lean proof: included
(case sp-acj4-392-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0") (var x real) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f392w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-403-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-403-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f403w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-410-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0
Lean proof: included
(case sp-acj4-410-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0") (var x real) (assume (nonzero x)) (assume (nonzero (sinh x))) (ask (= (sinh (exp (log x))) (exp (log (sinh x))))) (expect true) (lean-proof "have hs : Complex.sinh x ≠ 0 := (by simpa using h1.2); refine ⟨⟨⟨h0.2, trivial⟩, trivial, h1.2⟩, ?_⟩; simp only [AE.exp_def, AE.log_def, AE.sinh_eq]; rw [Complex.exp_log h0.2, Complex.exp_log hs]"))
sp-acj4-416-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0
Lean proof: included
(case sp-acj4-416-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0") (var x real) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f416w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_cos_acos]")))
sp-acj4-420-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-420-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f420w2 | exact AE.w2_cos_neg_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_neg_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-430-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0
Lean proof: included
(case sp-acj4-430-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f430w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-433-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0
Lean proof: included
(case sp-acj4-433-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0") (var x real) (assume (nonzero x)) (assume (!= (- (log x)) i)) (assume (!= (- (log x)) (- i))) (assume (nonzero (/ x))) (assume (!= (log (/ x)) i)) (assume (!= (log (/ x)) (- i))) (ask (= (atan (- (log x))) (atan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f433w2 | exact AE.w2_f433_h2 | exact AE.w2_f433_h3 | exact AE.w2_f433_h5 | exact AE.w2_f433_h6 | exact AE.w2_f433_atanD1 | exact AE.w2_f433_atanD2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-442-real
equal at some admissible points, different at others
witness (true): \(x = -1\)
witness (false): \(x = \frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0
Lean proof: included
(case sp-acj4-442-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0") (var x real) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect contingent) (witness true (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w1 | exact AE.w2_log_neg_one_ne | exact AE.w2_inv_log_neg_one_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w2 | exact AE.w2_log_half_ne | exact AE.w2_inv_log_half_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-449-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0
Lean proof: included
(case sp-acj4-449-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0") (var x real) (assume (nonzero x)) (assume (nonzero (cosh (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cosh (log (/ x))))) (ask (= (tanh (- (log x))) (tanh (log (/ x))))) (expect true) (lean-proof "refine ⟨⟨⟨h0.2, (AE.tanh.D_iff _).2 (by simpa using h1.2)⟩, ⟨h0.2, h2.2⟩, (AE.tanh.D_iff _).2 (by simpa using h3.2)⟩, ?_⟩; simp only [AE.tanh_eq, AE.log_def, AE.inv_def]; exact AE.tanh_neg_log x h0.2"))
sp-acj4-450-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1
Lean proof: included
(case sp-acj4-450-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1") (var x real) (assume (nonzero x)) (ask (= (/ x x) 1)) (expect true) (lean-proof "simp_all"))
sp-acj4-451-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0
Lean proof: included
(case sp-acj4-451-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0") (var x real) (assume (nonzero x)) (ask (= (/ 0 x) 0)) (expect true) (lean-proof "simp_all"))
sp-acj4-50-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0
Lean proof: included
(case sp-acj4-50-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0") (var x real) (assume (nonzero (pow 6 x))) (ask (= (* (log 6) x) (log (pow 6 x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨by norm_num, h0.1.1, h0.2⟩, ?_⟩; rw [show (6:ℂ) = ((6:ℝ):ℂ) by norm_num, AE.pow_ofReal (by norm_num) (Or.inl (by norm_num)), AE.log_ofReal (Real.rpow_nonneg (by norm_num) _), AE.log_ofReal (by norm_num), Real.log_rpow (by norm_num)]; push_cast; ring"))
sp-acj4-55-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e
Lean proof: included
(case sp-acj4-55-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (assume (nonzero (pow x (exp 1)))) (ask (= (* (log x) (exp 1)) (log (pow x (exp 1))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f55w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-56-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi
Lean proof: included
(case sp-acj4-56-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f56w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-6-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0
Lean proof: included
(case sp-acj4-6-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0") (var x real) (assume (!= (tanh x) 1)) (assume (!= (tanh x) -1)) (ask (= (atanh (tanh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h0.1, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ?_⟩; rw [AE.tanh_ofReal, AE.atanh_ofReal (Real.neg_one_lt_tanh r) (Real.tanh_lt_one r), Real.artanh_tanh]"))
sp-acj4-806-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1
Lean proof: included
(case sp-acj4-806-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1") (ask (= (cosh 0) 1)) (expect true) (lean-proof "simp"))
sp-acj4-813-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0
Lean proof: included
(case sp-acj4-813-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0") (ask (= (sinh 0) 0)) (expect true) (lean-proof "simp"))
sp-acj4-816-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0
Lean proof: included
(case sp-acj4-816-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0") (ask (= (tanh 0) 0)) (expect true) (lean-proof "simp"))
Case set 3ba0dfac4bca
sp-acj4-0-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0
Lean proof: included
(case sp-acj4-0-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0") (var x real) (ask (= (acosh (cosh x)) (abs x))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.cosh_ofReal, AE.acosh_ofReal (Real.one_le_cosh r), AE.abs_ofReal, ← Real.cosh_abs, Real.arcosh_cosh (abs_nonneg r)]"))
sp-acj4-115-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)
Lean proof: included
(case sp-acj4-115-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -4))) (ask (= (/ (log x) -4) (log (surd x -4)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-4:ℂ) = ((-4:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-116-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)
Lean proof: included
(case sp-acj4-116-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -6))) (ask (= (/ (log x) -6) (log (surd x -6)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-6:ℂ) = ((-6:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-130-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-130-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f130w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-151-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0
Lean proof: included
(case sp-acj4-151-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0") (var x real) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f151w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-154-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0
Lean proof: included
(case sp-acj4-154-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0") (var x real) (ask (= (acos (cos (sin x))) (abs (sin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sin_ofReal, AE.cos_ofReal, AE.acos_ofReal (Real.neg_one_le_cos _) (Real.cos_le_one _), AE.abs_ofReal, ← Real.cos_abs, Real.arccos_cos (abs_nonneg _) (by linarith [abs_le.mpr ⟨Real.neg_one_le_sin r, Real.sin_le_one r⟩, Real.pi_gt_three])]"))
sp-acj4-156-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0
Lean proof: included
(case sp-acj4-156-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0") (var x real) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f156w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-180-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0
Lean proof: included
(case sp-acj4-180-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0") (var x real) (assume (!= (sinh (acosh x)) i)) (assume (!= (sinh (acosh x)) (- i))) (assume (nonzero (cosh (acosh x)))) (ask (= (atan (sinh (acosh x))) (asin (tanh (acosh x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f180w2 | exact AE.w2_f180_hI | exact AE.w2_f180_hnI | exact AE.w2_f180_atanD | exact AE.w2_f180_cosh | exact AE.w2_f180_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-183-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0
Lean proof: included
(case sp-acj4-183-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0") (var x real) (assume (nonzero x)) (assume (!= (sinh (log x)) i)) (assume (!= (sinh (log x)) (- i))) (assume (nonzero (cosh (log x)))) (ask (= (atan (sinh (log x))) (asin (tanh (log x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f183w2 | exact AE.w2_f183_hI | exact AE.w2_f183_hnI | exact AE.w2_f183_atanD | exact AE.w2_f183_cosh | exact AE.w2_f183_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-189-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-189-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0") (var x real) (assume (!= (cos (asin x)) 1)) (assume (!= (cos (asin x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (asin x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.cos_eq, AE.cos_asin]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-190-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0
Lean proof: included
(case sp-acj4-190-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0") (var x real) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); have hS : 1 < Real.sqrt (1 + r ^ 2) := (Real.lt_sqrt zero_le_one).2 (by have := pow_pos (abs_pos.2 hr) 2; rw [sq_abs] at this; linarith); have hS0 : 0 < Real.sqrt (1 + r ^ 2) := (by linarith); refine ⟨⟨⟨⟨AE.atan.D_ofReal r, trivial⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.atan_ofReal, AE.cos_ofReal, Real.cos_arctan, AE.atanh_ofReal (by have := one_div_pos.2 hS0; linarith) ((div_lt_one hS0).2 hS), AE.inv_ofReal, AE.asinh_ofReal, AE.abs_ofReal, AE.artanh_eq_abs_arsinh hr]"))
sp-acj4-191-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-191-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0") (var x real) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.sin_eq, AE.sin_acos]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-203-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0
Lean proof: included
(case sp-acj4-203-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f203w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-229-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0
Lean proof: included
(case sp-acj4-229-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0") (var x real) (assume (nonzero (pow pi x))) (ask (= (/ (pow pi x)) (pow (/ pi) x))) (expect true) (lean-proof "refine ⟨by simp_all [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.inv_pow_base Real.pi_pos x"))
sp-acj4-234-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0
Lean proof: included
(case sp-acj4-234-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0") (var x real) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (ask (= (/ (pow x x)) (pow (/ x) x))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f234w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-241-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3
Lean proof: included
(case sp-acj4-241-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3") (var x real) (assume (nonzero (surd x 3))) (assume (nonzero x)) (ask (= (log (surd x 3)) (/ (log x) 3))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f241w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-247-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9
Lean proof: included
(case sp-acj4-247-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9") (var x real) (assume (nonzero (surd x 9))) (assume (nonzero x)) (ask (= (log (surd x 9)) (/ (log x) 9))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f247w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-260-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-260-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f260w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-261-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0
Lean proof: included
(case sp-acj4-261-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0") (var x real) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h1.1.1, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cosh_ofReal, AE.inv_ofReal, AE.log_ofReal (Real.cosh_pos r).le, AE.log_ofReal (inv_nonneg.2 (Real.cosh_pos r).le), Real.log_inv]; push_cast; ring"))
sp-acj4-266-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-266-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f266w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-267-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-267-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f267w2 | exact AE.w2_cos_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-29-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3
Lean proof: included
(case sp-acj4-29-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3") (var x real) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f29w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-3-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0
Lean proof: included
(case sp-acj4-3-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0") (var x real) (ask (= (asinh (sinh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sinh_ofReal, AE.asinh_ofReal, Real.arsinh_sinh]"))
sp-acj4-343-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0
Lean proof: included
(case sp-acj4-343-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0") (var x real) (ask (= (pow (/ pi) x) (pow pi (- x)))) (expect true) (lean-proof "refine ⟨by simp [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.pow_inv_base Real.pi_pos x"))
sp-acj4-344-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0
Lean proof: included
(case sp-acj4-344-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0") (var x real) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (assume (or (nonzero x) (> (re (- x)) 0))) (ask (= (pow (/ x) x) (pow x (- x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f344w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-378-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)
Lean proof: included
(case sp-acj4-378-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -5) (exp (/ x -5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-5, by norm_num⟩ : ∃ n : ℤ, (-5:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-5:ℂ) = ((-5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-5:ℤ):ℂ) = ((r * ((-5:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-380-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)
Lean proof: included
(case sp-acj4-380-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -7) (exp (/ x -7)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-7, by norm_num⟩ : ∃ n : ℤ, (-7:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-7:ℂ) = ((-7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-7:ℤ):ℂ) = ((r * ((-7:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-392-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0
Lean proof: included
(case sp-acj4-392-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0") (var x real) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f392w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-403-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-403-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f403w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-410-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0
Lean proof: included
(case sp-acj4-410-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0") (var x real) (assume (nonzero x)) (assume (nonzero (sinh x))) (ask (= (sinh (exp (log x))) (exp (log (sinh x))))) (expect true) (lean-proof "have hs : Complex.sinh x ≠ 0 := (by simpa using h1.2); refine ⟨⟨⟨h0.2, trivial⟩, trivial, h1.2⟩, ?_⟩; simp only [AE.exp_def, AE.log_def, AE.sinh_eq]; rw [Complex.exp_log h0.2, Complex.exp_log hs]"))
sp-acj4-416-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0
Lean proof: included
(case sp-acj4-416-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0") (var x real) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f416w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_cos_acos]")))
sp-acj4-420-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-420-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f420w2 | exact AE.w2_cos_neg_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_neg_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-430-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0
Lean proof: included
(case sp-acj4-430-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f430w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-433-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0
Lean proof: included
(case sp-acj4-433-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0") (var x real) (assume (nonzero x)) (assume (!= (- (log x)) i)) (assume (!= (- (log x)) (- i))) (assume (nonzero (/ x))) (assume (!= (log (/ x)) i)) (assume (!= (log (/ x)) (- i))) (ask (= (atan (- (log x))) (atan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f433w2 | exact AE.w2_f433_h2 | exact AE.w2_f433_h3 | exact AE.w2_f433_h5 | exact AE.w2_f433_h6 | exact AE.w2_f433_atanD1 | exact AE.w2_f433_atanD2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-442-real
equal at some admissible points, different at others
witness (true): \(x = -1\)
witness (false): \(x = \frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0
Lean proof: included
(case sp-acj4-442-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0") (var x real) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect contingent) (witness true (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w1 | exact AE.w2_log_neg_one_ne | exact AE.w2_inv_log_neg_one_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w2 | exact AE.w2_log_half_ne | exact AE.w2_inv_log_half_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-449-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0
Lean proof: included
(case sp-acj4-449-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0") (var x real) (assume (nonzero x)) (assume (nonzero (cosh (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cosh (log (/ x))))) (ask (= (tanh (- (log x))) (tanh (log (/ x))))) (expect true) (lean-proof "refine ⟨⟨⟨h0.2, (AE.tanh.D_iff _).2 (by simpa using h1.2)⟩, ⟨h0.2, h2.2⟩, (AE.tanh.D_iff _).2 (by simpa using h3.2)⟩, ?_⟩; simp only [AE.tanh_eq, AE.log_def, AE.inv_def]; exact AE.tanh_neg_log x h0.2"))
sp-acj4-450-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1
Lean proof: included
(case sp-acj4-450-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1") (var x real) (assume (nonzero x)) (ask (= (/ x x) 1)) (expect true) (lean-proof "simp_all"))
sp-acj4-451-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0
Lean proof: included
(case sp-acj4-451-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0") (var x real) (assume (nonzero x)) (ask (= (/ 0 x) 0)) (expect true) (lean-proof "simp_all"))
sp-acj4-50-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0
Lean proof: included
(case sp-acj4-50-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0") (var x real) (assume (nonzero (pow 6 x))) (ask (= (* (log 6) x) (log (pow 6 x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨by norm_num, h0.1.1, h0.2⟩, ?_⟩; rw [show (6:ℂ) = ((6:ℝ):ℂ) by norm_num, AE.pow_ofReal (by norm_num) (Or.inl (by norm_num)), AE.log_ofReal (Real.rpow_nonneg (by norm_num) _), AE.log_ofReal (by norm_num), Real.log_rpow (by norm_num)]; push_cast; ring"))
sp-acj4-55-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e
Lean proof: included
(case sp-acj4-55-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (assume (nonzero (pow x (exp 1)))) (ask (= (* (log x) (exp 1)) (log (pow x (exp 1))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f55w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-56-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi
Lean proof: included
(case sp-acj4-56-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f56w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-6-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0
Lean proof: included
(case sp-acj4-6-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0") (var x real) (assume (!= (tanh x) 1)) (assume (!= (tanh x) -1)) (ask (= (atanh (tanh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h0.1, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ?_⟩; rw [AE.tanh_ofReal, AE.atanh_ofReal (Real.neg_one_lt_tanh r) (Real.tanh_lt_one r), Real.artanh_tanh]"))
sp-acj4-806-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1
Lean proof: included
(case sp-acj4-806-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1") (ask (= (cosh 0) 1)) (expect true) (lean-proof "simp"))
sp-acj4-813-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0
Lean proof: included
(case sp-acj4-813-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0") (ask (= (sinh 0) 0)) (expect true) (lean-proof "simp"))
sp-acj4-816-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0
Lean proof: included
(case sp-acj4-816-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0") (ask (= (tanh 0) 0)) (expect true) (lean-proof "simp"))
Case set ee702ae2fe06
sp-acj4-0-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0
Lean proof: included
(case sp-acj4-0-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[0]: acosh cosh _0 -> abs _0") (var x real) (ask (= (acosh (cosh x)) (abs x))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.cosh_ofReal, AE.acosh_ofReal (Real.one_le_cosh r), AE.abs_ofReal, ← Real.cosh_abs, Real.arcosh_cosh (abs_nonneg r)]"))
sp-acj4-115-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)
Lean proof: included
(case sp-acj4-115-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[115]: / log _0 (-4) -> log rootn _0 (-4)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -4))) (ask (= (/ (log x) -4) (log (surd x -4)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-4:ℂ) = ((-4:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-116-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)
Lean proof: included
(case sp-acj4-116-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[116]: / log _0 (-6) -> log rootn _0 (-6)") (var x real) (assume (nonzero x)) (assume (> x 0)) (assume (nonzero (surd x -6))) (ask (= (/ (log x) -6) (log (surd x -6)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h1.2); refine ⟨⟨h0.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (-6:ℂ) = ((-6:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal hr.le, AE.log_ofReal (by positivity), Real.log_rpow hr]; simp; ring"))
sp-acj4-130-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-130-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f130w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-151-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0
Lean proof: included
(case sp-acj4-151-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0") (var x real) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f151w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-154-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0
Lean proof: included
(case sp-acj4-154-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[154]: acos cos sin _0 -> abs sin _0") (var x real) (ask (= (acos (cos (sin x))) (abs (sin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sin_ofReal, AE.cos_ofReal, AE.acos_ofReal (Real.neg_one_le_cos _) (Real.cos_le_one _), AE.abs_ofReal, ← Real.cos_abs, Real.arccos_cos (abs_nonneg _) (by linarith [abs_le.mpr ⟨Real.neg_one_le_sin r, Real.sin_le_one r⟩, Real.pi_gt_three])]"))
sp-acj4-156-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0
Lean proof: included
(case sp-acj4-156-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0") (var x real) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f156w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-180-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0
Lean proof: included
(case sp-acj4-180-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0") (var x real) (assume (!= (sinh (acosh x)) i)) (assume (!= (sinh (acosh x)) (- i))) (assume (nonzero (cosh (acosh x)))) (ask (= (atan (sinh (acosh x))) (asin (tanh (acosh x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f180w2 | exact AE.w2_f180_hI | exact AE.w2_f180_hnI | exact AE.w2_f180_atanD | exact AE.w2_f180_cosh | exact AE.w2_f180_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-183-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0
Lean proof: included
(case sp-acj4-183-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0") (var x real) (assume (nonzero x)) (assume (!= (sinh (log x)) i)) (assume (!= (sinh (log x)) (- i))) (assume (nonzero (cosh (log x)))) (ask (= (atan (sinh (log x))) (asin (tanh (log x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f183w2 | exact AE.w2_f183_hI | exact AE.w2_f183_hnI | exact AE.w2_f183_atanD | exact AE.w2_f183_cosh | exact AE.w2_f183_tanhD | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-189-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-189-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[189]: atanh cos asin _0 -> acosh abs inv _0") (var x real) (assume (!= (cos (asin x)) 1)) (assume (!= (cos (asin x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (asin x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.cos_eq, AE.cos_asin]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-190-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0
Lean proof: included
(case sp-acj4-190-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0") (var x real) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); have hS : 1 < Real.sqrt (1 + r ^ 2) := (Real.lt_sqrt zero_le_one).2 (by have := pow_pos (abs_pos.2 hr) 2; rw [sq_abs] at this; linarith); have hS0 : 0 < Real.sqrt (1 + r ^ 2) := (by linarith); refine ⟨⟨⟨⟨AE.atan.D_ofReal r, trivial⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.atan_ofReal, AE.cos_ofReal, Real.cos_arctan, AE.atanh_ofReal (by have := one_div_pos.2 hS0; linarith) ((div_lt_one hS0).2 hS), AE.inv_ofReal, AE.asinh_ofReal, AE.abs_ofReal, AE.artanh_eq_abs_arsinh hr]"))
sp-acj4-191-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0
Lean proof: included
(case sp-acj4-191-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0") (var x real) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : r ≠ 0 := (by simpa using h2.2); refine ⟨⟨⟨⟨by simp, by simp⟩, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ⟨h2.2, by simp⟩, by simp⟩, ?_⟩; rw [AE.sin_eq, AE.sin_acos]; exact AE.atanh_sqrt_eq_acosh hr"))
sp-acj4-203-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0
Lean proof: included
(case sp-acj4-203-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f203w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-229-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0
Lean proof: included
(case sp-acj4-229-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[229]: inv pow np.pi _0 -> pow inv np.pi _0") (var x real) (assume (nonzero (pow pi x))) (ask (= (/ (pow pi x)) (pow (/ pi) x))) (expect true) (lean-proof "refine ⟨by simp_all [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.inv_pow_base Real.pi_pos x"))
sp-acj4-234-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0
Lean proof: included
(case sp-acj4-234-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0") (var x real) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (ask (= (/ (pow x x)) (pow (/ x) x))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f234w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-241-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3
Lean proof: included
(case sp-acj4-241-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[241]: log rootn _0 3 -> / log _0 3") (var x real) (assume (nonzero (surd x 3))) (assume (nonzero x)) (ask (= (log (surd x 3)) (/ (log x) 3))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f241w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-247-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9
Lean proof: included
(case sp-acj4-247-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[247]: log rootn _0 9 -> / log _0 9") (var x real) (assume (nonzero (surd x 9))) (assume (nonzero x)) (ask (= (log (surd x 9)) (/ (log x) 9))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f247w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-260-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0
Lean proof: included
(case sp-acj4-260-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0") (var x real) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f260w2 | exact AE.w2_cos_two_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_ccos_two_ne]")))
sp-acj4-261-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0
Lean proof: included
(case sp-acj4-261-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0") (var x real) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h1.1.1, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cosh_ofReal, AE.inv_ofReal, AE.log_ofReal (Real.cosh_pos r).le, AE.log_ofReal (inv_nonneg.2 (Real.cosh_pos r).le), Real.log_inv]; push_cast; ring"))
sp-acj4-266-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-266-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f266w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-267-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-267-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f267w2 | exact AE.w2_cos_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-29-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3
Lean proof: included
(case sp-acj4-29-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3") (var x real) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f29w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-3-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0
Lean proof: included
(case sp-acj4-3-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[3]: asinh sinh _0 -> _0") (var x real) (ask (= (asinh (sinh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨by simp, ?_⟩; rw [AE.sinh_ofReal, AE.asinh_ofReal, Real.arsinh_sinh]"))
sp-acj4-343-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0
Lean proof: included
(case sp-acj4-343-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[343]: pow inv np.pi _0 -> pow np.pi neg _0") (var x real) (ask (= (pow (/ pi) x) (pow pi (- x)))) (expect true) (lean-proof "refine ⟨by simp [Real.pi_ne_zero], ?_⟩; simp only [AE.pi_def, AE.inv_def]; exact AE.pow_inv_base Real.pi_pos x"))
sp-acj4-344-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -\frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0
Lean proof: included
(case sp-acj4-344-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0") (var x real) (assume (nonzero x)) (assume (or (nonzero (/ x)) (> (re x) 0))) (assume (or (nonzero x) (> (re (- x)) 0))) (ask (= (pow (/ x) x) (pow x (- x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f344w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-378-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)
Lean proof: included
(case sp-acj4-378-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[378]: rootn exp _0 (-5) -> exp / _0 (-5)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -5) (exp (/ x -5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-5, by norm_num⟩ : ∃ n : ℤ, (-5:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-5:ℂ) = ((-5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-5:ℤ):ℂ) = ((r * ((-5:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-380-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)
Lean proof: included
(case sp-acj4-380-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[380]: rootn exp _0 (-7) -> exp / _0 (-7)") (var x real) (assume (nonzero (exp x))) (ask (= (surd (exp x) -7) (exp (/ x -7)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨(AE.surd.D_iff _ _).2 ⟨by simp [AE.exp_ofReal], (⟨-7, by norm_num⟩ : ∃ n : ℤ, (-7:ℂ) = n), by norm_num, Or.inl (by rw [AE.exp_ofReal, Complex.ofReal_re]; exact (Real.exp_pos r).le), Or.inl h0.2⟩, ?_⟩; rw [AE.exp_ofReal, show (-7:ℂ) = ((-7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos r).le (by norm_num), ← Real.exp_mul, show (r:ℂ) * AE.inv ((-7:ℤ):ℂ) = ((r * ((-7:ℤ):ℝ)⁻¹ : ℝ) : ℂ) by push_cast; simp, AE.exp_ofReal]"))
sp-acj4-392-real
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0
Lean proof: included
(case sp-acj4-392-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0") (var x real) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect contingent) (witness true (x 0) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f392w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-403-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0
Lean proof: included
(case sp-acj4-403-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f403w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-410-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0
Lean proof: included
(case sp-acj4-410-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[410]: sinh exp log _0 -> exp log sinh _0") (var x real) (assume (nonzero x)) (assume (nonzero (sinh x))) (ask (= (sinh (exp (log x))) (exp (log (sinh x))))) (expect true) (lean-proof "have hs : Complex.sinh x ≠ 0 := (by simpa using h1.2); refine ⟨⟨⟨h0.2, trivial⟩, trivial, h1.2⟩, ?_⟩; simp only [AE.exp_def, AE.log_def, AE.sinh_eq]; rw [Complex.exp_log h0.2, Complex.exp_log hs]"))
sp-acj4-416-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0
Lean proof: included
(case sp-acj4-416-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0") (var x real) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f416w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos, AE.w2_cos_acos]")))
sp-acj4-420-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0
Lean proof: included
(case sp-acj4-420-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0") (var x real) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f420w2 | exact AE.w2_cos_neg_log_neg_one | exact AE.w2_cos_log_inv_neg_one | exact AE.w2_tanD_neg_log_neg_one | exact AE.w2_tanD_log_inv_neg_one | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-430-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0
Lean proof: included
(case sp-acj4-430-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f430w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-433-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0
Lean proof: included
(case sp-acj4-433-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0") (var x real) (assume (nonzero x)) (assume (!= (- (log x)) i)) (assume (!= (- (log x)) (- i))) (assume (nonzero (/ x))) (assume (!= (log (/ x)) i)) (assume (!= (log (/ x)) (- i))) (ask (= (atan (- (log x))) (atan (log (/ x))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f433w2 | exact AE.w2_f433_h2 | exact AE.w2_f433_h3 | exact AE.w2_f433_h5 | exact AE.w2_f433_h6 | exact AE.w2_f433_atanD1 | exact AE.w2_f433_atanD2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-442-real
equal at some admissible points, different at others
witness (true): \(x = -1\)
witness (false): \(x = \frac{1}{2}\)
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0
Lean proof: included
(case sp-acj4-442-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0") (var x real) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect contingent) (witness true (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w1 | exact AE.w2_log_neg_one_ne | exact AE.w2_inv_log_neg_one_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x 1/2) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f442w2 | exact AE.w2_log_half_ne | exact AE.w2_inv_log_half_ne | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-449-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0
Lean proof: included
(case sp-acj4-449-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[449]: tanh neg log !0 -> tanh log inv !0") (var x real) (assume (nonzero x)) (assume (nonzero (cosh (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cosh (log (/ x))))) (ask (= (tanh (- (log x))) (tanh (log (/ x))))) (expect true) (lean-proof "refine ⟨⟨⟨h0.2, (AE.tanh.D_iff _).2 (by simpa using h1.2)⟩, ⟨h0.2, h2.2⟩, (AE.tanh.D_iff _).2 (by simpa using h3.2)⟩, ?_⟩; simp only [AE.tanh_eq, AE.log_def, AE.inv_def]; exact AE.tanh_neg_log x h0.2"))
sp-acj4-450-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1
Lean proof: included
(case sp-acj4-450-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[450]: / $0 $0 -> 1") (var x real) (assume (nonzero x)) (ask (= (/ x x) 1)) (expect true) (lean-proof "simp_all"))
sp-acj4-451-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0
Lean proof: included
(case sp-acj4-451-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[451]: / 0 $0 -> 0") (var x real) (assume (nonzero x)) (ask (= (/ 0 x) 0)) (expect true) (lean-proof "simp_all"))
sp-acj4-50-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0
Lean proof: included
(case sp-acj4-50-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[50]: * log 6 _0 -> log pow 6 _0") (var x real) (assume (nonzero (pow 6 x))) (ask (= (* (log 6) x) (log (pow 6 x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨by norm_num, h0.1.1, h0.2⟩, ?_⟩; rw [show (6:ℂ) = ((6:ℝ):ℂ) by norm_num, AE.pow_ofReal (by norm_num) (Or.inl (by norm_num)), AE.log_ofReal (Real.rpow_nonneg (by norm_num) _), AE.log_ofReal (by norm_num), Real.log_rpow (by norm_num)]; push_cast; ring"))
sp-acj4-55-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e
Lean proof: included
(case sp-acj4-55-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (assume (nonzero (pow x (exp 1)))) (ask (= (* (log x) (exp 1)) (log (pow x (exp 1))))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f55w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-56-real
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi
Lean proof: included
(case sp-acj4-56-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi") (var x real) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect contingent) (witness true (x 1) (lean-proof "norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")) (witness false (x -1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_f56w2 | norm_num [AE.abs_eq, AE.pow, AE.w2_asin_zero, AE.w2_asin_one, AE.w2_acos_zero, AE.w2_acos_one, AE.w2_atan_zero, AE.w2_atanh_zero, AE.w2_asinh_zero, AE.w2_acosh_one, AE.surd, AE.w2_zero_ne_I, AE.w2_isInt_three, AE.w2_isInt_five, AE.w2_isInt_nine, AE.w2_isInt_neg_five, AE.w2_odd_three, AE.w2_odd_five, AE.w2_odd_nine, AE.w2_odd_neg_five, Real.pi_pos, Complex.exp_re, Real.exp_pos]")))
sp-acj4-6-real
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0
Lean proof: included
(case sp-acj4-6-real (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[6]: atanh tanh !0 -> !0") (var x real) (assume (!= (tanh x) 1)) (assume (!= (tanh x) -1)) (ask (= (atanh (tanh x)) x)) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨h0.1, (AE.atanh.D_iff _).2 ⟨h0.2, h1.2⟩⟩, ?_⟩; rw [AE.tanh_ofReal, AE.atanh_ofReal (Real.neg_one_lt_tanh r) (Real.tanh_lt_one r), Real.artanh_tanh]"))
sp-acj4-806-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1
Lean proof: included
(case sp-acj4-806-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[806]: cosh 0 -> 1") (ask (= (cosh 0) 1)) (expect true) (lean-proof "simp"))
sp-acj4-813-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0
Lean proof: included
(case sp-acj4-813-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[813]: sinh 0 -> 0") (ask (= (sinh 0) 0)) (expect true) (lean-proof "simp"))
sp-acj4-816-ground
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0
Lean proof: included
(case sp-acj4-816-ground (category simplipy-f64-edge) (note "SimpliPy acj-4 (MIT) rules_real.json[816]: tanh 0 -> 0") (ask (= (tanh 0) 0)) (expect true) (lean-proof "simp"))