simplipy-conditional
The rule under the weakest natural assumption that makes it true, or under one that makes it false everywhere.
Case set ba9dc4def822
sp-acj4-1-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-1-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (asin (abs x)) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arcsin_abs]"))
sp-acj4-108-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-108-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (abs x))) (ask (= (/ (abs x) x) (/ x (abs x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c108 x h0 h1 h2"))
sp-acj4-124-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-124-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (asin (tanh x))) (acos (/ (cosh x))))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c124_w1")) (witness false (x i) (lean-proof "exact AE.w3_c124_w2")))
sp-acj4-127-condf
the two sides differ at every admissible point
witness (false): \(x = 1\)
SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]
Lean proof: included
(case sp-acj4-127-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (!= (exp x) 1)) (assume (!= (exp x) -1)) (ask (= (abs (atanh (exp x))) (atanh (exp x)))) (expect false) (witness false (x 1)) (lean-proof "exact AE.w2_c127 x h0 h1 h2"))
sp-acj4-128-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-128-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.abs_ofReal, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-128-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-128-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c128 x hd0 h0"))
sp-acj4-129-cond
equal at some admissible points, different at others
witness (true): \(x = \frac{1}{2} \, i\)
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-129-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (ask (= (abs (cos (atan x))) (cos (atan x)))) (expect contingent) (witness true (x (* 1/2 i)) (lean-proof "exact AE.w3_c129_w1")) (witness false (x (* 2 i)) (lean-proof "exact AE.w3_c129_w2")))
sp-acj4-130-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]
Lean proof: included
(case sp-acj4-130-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]") (var x real) (assume (< (abs x) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hr' := abs_lt.mp hr; have hc : 0 < Real.cos r := Real.cos_pos_of_mem_Ioo ⟨hr'.1, hr'.2⟩; refine ⟨by simp; rw [← Complex.ofReal_cos]; exact_mod_cast hc.ne', ?_⟩; rw [AE.cos_ofReal, AE.log_ofReal hc.le, AE.abs_ofReal, AE.inv_ofReal, AE.log_ofReal (inv_nonneg.mpr hc.le), Real.log_inv, abs_of_nonpos (Real.log_nonpos hc.le (Real.cos_le_one r))]"))
sp-acj4-131-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-131-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (log (cosh x))) (log (cosh x)))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c131_w1")) (witness false (x i) (lean-proof "exact AE.w3_c131_w2")))
sp-acj4-132-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-132-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (assume (nonzero (sin x))) (ask (= (abs (log (sin x))) (- (log (sin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have ha : 0 ≤ r := (by simpa using h0.2); have hb : r ≤ Real.pi := (by simpa using h1.2); have hs : 0 ≤ Real.sin r := Real.sin_nonneg_of_nonneg_of_le_pi ha hb; refine ⟨by simpa using h2.2, ?_⟩; rw [AE.sin_ofReal, AE.log_ofReal hs, AE.abs_ofReal, abs_of_nonpos (Real.log_nonpos hs (Real.sin_le_one r))]; push_cast; rfl"))
sp-acj4-133-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-133-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (tanh x))) (ask (= (abs (log (tanh x))) (- (log (tanh x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c133 x h0 h1 h2"))
sp-acj4-136-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-136-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (ask (= (abs (pow x (exp 1))) (pow x (exp 1)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) (AE.exp 1) := (AE.pow.D_iff _ _).mpr (Or.inr (by rw [AE.cond_exp_one_eq, Complex.ofReal_re]; exact Real.exp_pos 1)); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_abs_pow_ofReal hr (Real.exp_pos 1).ne']"))
sp-acj4-137-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-137-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re pi) 0))) (ask (= (abs (pow x pi)) (pow x pi))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) AE.pi := (AE.pow.D_iff _ _).mpr (Or.inr (by simp [Real.pi_pos])); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.pi_def, AE.cond_abs_pow_ofReal hr Real.pi_ne_zero]"))
sp-acj4-145-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-145-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.asin_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cos_ofReal, AE.abs_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-145-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-145-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c145 x hd0 h0"))
sp-acj4-147-cond
equal at some admissible points, different at others
witness (true): \(x = 2 \, i\)
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-147-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh (asinh x)))) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (abs (tanh (asinh x))) (cos (atan (/ x))))) (expect contingent) (witness true (x (* 2 i)) (lean-proof "exact AE.w3_c147_w1")) (witness false (x (* 1/2 i)) (lean-proof "exact AE.w3_c147_w2")))
sp-acj4-151-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-151-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-156-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-156-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-159-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-159-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-159-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-159-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-162-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-162-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (real x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 ≤ r := (by simpa using h0.2); have hs : AE.surd (↑r) 5 = AE.pow (↑r) (1/5) := (by rw [AE.surd, if_pos (by simpa using hr)]; norm_num [AE.inv_def]); rw [hs]; refine ⟨⟨⟨?_, by simp⟩, (AE.pow.D_iff _ _).mpr (Or.inr (by norm_num)), by simp⟩, rfl⟩; rw [AE.surd.D_iff]; exact ⟨by simp, ⟨5, by norm_num⟩, by norm_num, Or.inl (by simpa using hr), Or.inr (by norm_num)⟩"))
sp-acj4-162-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]
Lean proof: included
(case sp-acj4-162-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]") (var x real) (assume (negative x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c162 x hd0 h0"))
sp-acj4-171-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-171-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)") (var x complex) (assume (< (abs (im x)) pi)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh 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 (+ 1/2 (* (/ pi 2) i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c171w2 | exact AE.w2_c171_cosh | exact AE.w2_c171_tanhD | exact AE.w2_c171_lt | 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-171-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-171-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); refine ⟨by simp; simpa using h1.2, ?_⟩; rw [hS, AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh]"))
sp-acj4-179-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-179-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (acos x)) i)) (assume (!= (sinh (acos x)) (- i))) (assume (nonzero (cosh (acos x)))) (ask (= (atan (sinh (acos x))) (asin (tanh (acos x))))) (expect true))
sp-acj4-180-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]
(case sp-acj4-180-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-181-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-181-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (asin x)) i)) (assume (!= (sinh (asin x)) (- i))) (assume (nonzero (cosh (asin x)))) (ask (= (atan (sinh (asin x))) (asin (tanh (asin x))))) (expect true))
sp-acj4-183-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]
(case sp-acj4-183-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-186-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-186-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos (sin x)))) (assume (!= (tan (sin x)) i)) (assume (!= (tan (sin x)) (- i))) (ask (= (atan (tan (sin x))) (sin x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.sin (↑y * Complex.I) = ↑(Real.sinh y) * Complex.I := (by rw [AE.sin_eq, AE.cond_sin_mul_I']); rw [hS] at h2 h3 ⊢; have hT : AE.tan (↑(Real.sinh y) * Complex.I) = ↑(Real.tanh (Real.sinh y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h2 h3 ⊢; refine ⟨⟨⟨⟨by simp, h2.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-187-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-187-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (cos (tanh x)))) (assume (!= (tan (tanh x)) i)) (assume (!= (tan (tanh x)) (- i))) (ask (= (atan (tan (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h3 h4 ⊢; have hT : AE.tan (↑(Real.tan y) * Complex.I) = ↑(Real.tanh (Real.tan y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h3 h4 ⊢; refine ⟨⟨⟨⟨h3.1.1, h3.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h3.2, by rw [← AE.i_def]; exact h4.2⟩⟩, h3.1.1⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-190-condf
the two sides differ at every admissible point
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-190-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect false) (witness false (x (* 1/2 i))) (lean-proof "exact AE.w2_c190 x h0 h1 h2 h3 h4 h5"))
sp-acj4-191-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-191-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c191 x h0 h1 h2 h3"))
sp-acj4-196-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-196-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (!= (sin (tanh x)) 1)) (assume (!= (sin (tanh x)) -1)) (assume (nonzero (cos (tanh x)))) (ask (= (atanh (sin (tanh x))) (asinh (tan (tanh x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h2 h3 h4 ⊢; rw [AE.sin_eq, AE.cond_sin_mul_I'] at h2 h3 ⊢; refine ⟨⟨⟨⟨h2.1.1, by simp⟩, (AE.atanh.D_iff _).mpr ⟨h2.2, h3.2⟩⟩, ⟨⟨h2.1.1, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, by simp⟩⟩, ?_⟩; rw [AE.cond_atanh_mul_I, AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-20-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-20-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sinh (abs x)) (abs (sinh x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c20 x h0"))
sp-acj4-200-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-200-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (cos (asin (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-202-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-202-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (assume (!= (tan x) i)) (assume (!= (tan x) (- i))) (ask (= (cos (atan (tan x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨h2.1, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, by simp⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-203-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-203-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨⟨h1.2, h2.2⟩, by simp⟩, h1.2, by simp⟩, ?_⟩; simp [Complex.cos_neg]"))
sp-acj4-205-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-205-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (ask (= (cosh (asinh (tan x))) (abs (/ (cos x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨(AE.tan.D_iff _).mpr (by simpa using h1.2), by simp⟩, by simp⟩, ⟨⟨by simp, h1.2⟩, by simp⟩⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_eq, AE.cond_cosh_mul_I', Real.cos_arcsin, AE.cond_one_sub_tanh_sq, Real.sqrt_inv, Real.sqrt_sq (Real.cosh_pos y).le, AE.cos_eq, AE.cond_cos_mul_I', AE.inv_def, ← Complex.ofReal_inv, AE.abs_ofReal, abs_of_pos (inv_pos.mpr (Real.cosh_pos y))]"))
sp-acj4-234-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-234-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h3.2))⟩, ?_⟩; rw [AE.cond_inv_pow_of h3.2, AE.cond_pow_inv_left_of h3.2 (Or.inl hre)]"))
sp-acj4-234-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-234-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h2.2; refine ⟨⟨⟨h1.1.1, h1.2⟩, hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, ?_⟩; rw [AE.inv_def, AE.inv_def, AE.cond_pow_intCast' hn, AE.cond_pow_intCast' (inv_ne_zero hn), inv_zpow]"))
sp-acj4-243-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-243-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 5))) (assume (nonzero x)) (ask (= (log (surd x 5)) (/ (log x) 5))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (5:ℂ) = ((5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-245-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-245-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 7))) (assume (nonzero x)) (ask (= (log (surd x 7)) (/ (log x) 7))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (7:ℂ) = ((7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-248-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-248-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (- (abs (asin x))) (asin (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.asin_ofReal (by linarith) (by linarith [abs_nonneg r]), Real.arcsin_neg, AE.cond_arcsin_abs]; push_cast; rfl"))
sp-acj4-251-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-251-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (assume (!= (- (abs x)) 1)) (assume (!= (- (abs x)) -1)) (ask (= (- (abs (atanh x))) (atanh (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h1, h2]; exact ⟨by norm_cast; intro h; linarith [abs_nonneg r], by norm_cast; intro h; linarith⟩, ?_⟩; rw [AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.atanh_ofReal (by linarith) (by linarith [abs_nonneg r]), AE.cond_artanh_neg', AE.cond_artanh_abs]; push_cast; rfl"))
sp-acj4-260-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]
Lean proof: included
(case sp-acj4-260-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]") (var x complex) (assume (< (abs (re x)) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "have hb : |x.re| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hb' := abs_lt.mp hb; have hc : 0 < (AE.cos x).re := (by rw [AE.cos_eq, AE.cond_cos_re]; exact mul_pos (Real.cos_pos_of_mem_Ioo ⟨hb'.1, hb'.2⟩) (Real.cosh_pos _)); refine ⟨⟨h2.1.1, h2.1.1, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hc.le)]"))
sp-acj4-261-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-261-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w1 | exact AE.w2_cosh_one_ne | exact AE.w2_inv_cosh_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, AE.w2_ccosh_one_ne]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w2 | exact AE.w2_cosh_xpi_ne | exact AE.w2_inv_cosh_xpi_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-266-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-266-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, ?_⟩; simp [Complex.sin_neg]"))
sp-acj4-266-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-266-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c266_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c266_w2")))
sp-acj4-267-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-267-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; refine ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, ?_⟩; simp [Complex.tan_neg]"))
sp-acj4-267-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-267-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c267 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-283-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-283-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 2) (* x x))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c283 x h0"))
sp-acj4-287-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]
Lean proof: included
(case sp-acj4-287-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 6) (pow x 6))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c287 x h0"))
sp-acj4-289-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-289-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 8) (pow x 8))) (expect true) (lean-proof "have hre : x.re = 0 := (by simpa using h0.2.1); have hx : x ≠ 0 := h0.2.2; have ha : AE.abs x ≠ 0 := (by rw [AE.abs_eq]; exact_mod_cast norm_ne_zero_iff.mpr hx); refine ⟨⟨⟨by simp, (AE.pow.D_iff _ _).mpr (Or.inl ha)⟩, (AE.pow.D_iff _ _).mpr (Or.inl hx)⟩, ?_⟩; rw [show (8:ℂ) = ((8:ℕ):ℂ) by norm_num, AE.cond_pow_natCast' ha, AE.cond_pow_natCast' hx, AE.abs_eq, AE.cond_norm_pow_eight_of_re_zero hre]"))
sp-acj4-29-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-29-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (3:ℂ) = ((3:ℝ):ℂ) by norm_num, AE.cond_log_pow_ofReal hr]"))
sp-acj4-29-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]
Lean proof: included
(case sp-acj4-29-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c29 x h0 h1 h2"))
sp-acj4-334-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-334-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re (exp 1)) 0))) (ask (= (pow (exp x) (exp 1)) (exp (* (exp 1) x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-335-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-335-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re pi) 0))) (ask (= (pow (exp x) pi) (exp (* pi x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-336-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-336-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re x) 0))) (ask (= (pow (exp x) x) (exp (* x x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-344-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-344-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h1.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h1.2))⟩, (AE.pow.D_iff _ _).mpr (Or.inl h1.2)⟩, ?_⟩; rw [AE.cond_pow_inv_left_of h1.2 (Or.inl hre)]"))
sp-acj4-344-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-344-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; refine ⟨⟨⟨hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, (AE.pow.D_iff _ _).mpr (Or.inl hn)⟩, ?_⟩; rw [AE.inv_def, AE.cond_pow_intCast' (inv_ne_zero hn), show -(n:ℂ) = ((-n : ℤ) : ℂ) by push_cast; rfl, AE.cond_pow_intCast' hn, inv_zpow, zpow_neg]"))
sp-acj4-372-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-372-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (assume (nonzero (cosh x))) (ask (= (surd (cosh x) -5) (pow (cosh x) -1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_cosh_xpi_ne | exact AE.w2_c372_surdD | exact AE.w2_c372_powD | 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-373-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-373-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (ask (= (surd (cosh x) 5) (pow (cosh x) 1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_c373_surdD | exact AE.w2_c373_powD | 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-376-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]
Lean proof: included
(case sp-acj4-376-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]") (var x complex) (assume (< (abs (im x)) pi)) (assume (real (exp x))) (assume (nonzero (exp x))) (ask (= (surd (exp x) -3) (exp (/ x -3)))) (expect true) (lean-proof "have hb : |x.im| < Real.pi := (by simpa [AE.abs_ofReal] using h0.2); have hb' := abs_lt.mp hb; have hs : Real.sin x.im = 0 := (by have := h1.2; simp [Complex.exp_im] at this; exact this); have hi : x.im = 0 := (Real.sin_eq_zero_iff_of_lt_of_lt hb'.1 hb'.2).mp hs; obtain ⟨a, rfl⟩ := AE.IsReal.exists hi; rw [AE.exp_ofReal]; refine ⟨(by rw [AE.surd.D_iff]; exact ⟨by simp, ⟨-3, by norm_num⟩, by norm_num, Or.inl (by rw [Complex.ofReal_re]; exact (Real.exp_pos a).le), Or.inl (by exact_mod_cast (Real.exp_pos a).ne')⟩), ?_⟩; rw [show (-3:ℂ) = ((-3:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos a).le (by norm_num), ← Real.exp_mul]; simp only [AE.exp_def, AE.inv_def]; push_cast; ring_nf"))
sp-acj4-385-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-385-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (exp x))) (ask (= (surd (exp x) 3) (exp (/ x 3)))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w1 | 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, Complex.exp_im]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w2 | exact AE.w2_c385_real | exact AE.w2_c385_surdD | 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-392-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-392-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.sin_ofReal, AE.acos_ofReal hr'.1 hr'.2, AE.cos_ofReal, Real.cos_arccos hr'.1 hr'.2, AE.abs_ofReal, ← AE.cond_arcsin_abs, Real.sin_arcsin (by linarith [abs_nonneg r]) hr]"))
sp-acj4-394-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-394-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (abs (atanh x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c394w2 | 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-399-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-399-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sin (acos (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq ((y:ℂ) * Complex.I), AE.cond_sin_mul_I', AE.cond_acos_mul_I, Real.arsinh_sinh, AE.sin_eq, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y), show ((Real.pi/2 : ℝ):ℂ) - ↑y * Complex.I = ↑Real.pi/2 - ↑y * Complex.I by push_cast; ring, Complex.sin_pi_div_two_sub, AE.cond_cos_mul_I']"))
sp-acj4-402-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-402-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (atanh (abs x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c402w2 | 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-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-403-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; exact ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, rfl⟩"))
sp-acj4-403-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-403-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c403_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c403_w2")))
sp-acj4-412-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-412-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (abs (asin x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (abs (asin x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.asin_ofReal hr'.1.le hr'.2.le, AE.abs_ofReal, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-416-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-416-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.acos_ofReal (by linarith [abs_nonneg r]) hr, AE.acos_ofReal hr'.1 hr'.2, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, Real.tan_arccos, Real.tan_arccos, abs_div, abs_of_nonneg (Real.sqrt_nonneg _), sq_abs]"))
sp-acj4-417-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-417-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (asin (abs x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (asin (abs x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr.le, AE.asin_ofReal hr'.1.le hr'.2.le, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_arcsin_abs, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-420-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-420-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; exact ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, rfl⟩"))
sp-acj4-420-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-420-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c420 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-422-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-422-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (abs (asinh x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c422 x h0 h1 h2 h3"))
sp-acj4-424-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-424-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (asinh (abs x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c424 x h0 h1 h2 h3"))
sp-acj4-428-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-428-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-428-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-428-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-430-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-430-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-430-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-430-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; have h0' : r ≠ 0 := (by simpa using h1.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_self_ofReal hr h0', mul_comm]"))
sp-acj4-432-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-432-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (abs (tanh x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.tanh_ofReal, AE.abs_ofReal, ← AE.cond_tanh_abs, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-433-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-433-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h5 h6 ⊢; have hD : AE.atan.D (-AE.log x) := (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩; exact ⟨⟨⟨h1.2, hD⟩, ⟨h1.2, h4.2⟩, hD⟩, rfl⟩"))
sp-acj4-433-condf
the two sides differ at every admissible point
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]
Lean proof: included
(case sp-acj4-433-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]") (var x real) (assume (negative x)) (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 false) (witness false (x -2)) (lean-proof "exact AE.w2_c433 x hd0 h0 h1 h2 h3 h4 h5 h6"))
sp-acj4-442-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-442-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hi : (AE.log (↑y * Complex.I)).im ≠ 0 := (by rw [AE.log_def, Complex.log_im, Ne, Complex.arg_eq_zero_iff]; simp [hy]); refine ⟨⟨⟨h1.2, h2.2⟩, ⟨h1.2, h2.2⟩, h3.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inr hi)]"))
sp-acj4-442-cond4
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-442-cond4 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]") (var x integer) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; have hn' : n ≠ 0 := (by exact_mod_cast hn); have hre : 0 ≤ (AE.log (n:ℂ)).re := (by rw [AE.log_def, Complex.log_re]; apply Real.log_nonneg; rw [Complex.norm_intCast]; exact_mod_cast Int.one_le_abs hn'); refine ⟨⟨⟨h1.1.1, h1.2⟩, ⟨h1.1.1, h1.2⟩, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hre)]"))
sp-acj4-46-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-46-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (pow 2 x))) (ask (= (* (log 2) x) (log (pow 2 x)))) (expect true) (lean-proof "simp at h0; have hl := Real.log_pos one_lt_two; have hl2 := Real.log_two_lt_d9; have e : (x * Complex.log 2).im = x.im * Real.log 2 := (by rw [AE.cond_log_two_eq, Complex.mul_im, Complex.ofReal_im, Complex.ofReal_re]; ring); refine ⟨⟨two_ne_zero, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cond_log_pow_of_im two_ne_zero (by rw [e]; nlinarith [Real.pi_pos]) (by rw [e]; nlinarith [Real.pi_pos]), mul_comm]"))
sp-acj4-5-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-5-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (atanh (abs x)) (abs (atanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h2, h3]; exact ⟨by intro h; linarith, by intro h; have := congrArg Complex.re h; simp at this; linarith [abs_nonneg r]⟩, ?_⟩; rw [AE.abs_ofReal, AE.atanh_ofReal (by linarith [abs_nonneg r]) hr, AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_artanh_abs]"))
sp-acj4-55-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-55-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]") (var x real) (assume (positive x)) (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 true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-56-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.pi_def, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]
Lean proof: included
(case sp-acj4-56-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c56 x h0 h1 h2 h3"))
sp-acj4-9-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-9-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (exp x))) (ask (= (log (exp x)) x)) (expect true) (lean-proof "simp at h0; exact ⟨Complex.exp_ne_zero _, AE.log_exp_of_im h0.1 h0.2⟩"))
Case set 3ba0dfac4bca
sp-acj4-1-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-1-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (asin (abs x)) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arcsin_abs]"))
sp-acj4-108-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-108-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (abs x))) (ask (= (/ (abs x) x) (/ x (abs x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c108 x h0 h1 h2"))
sp-acj4-124-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-124-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (asin (tanh x))) (acos (/ (cosh x))))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c124_w1")) (witness false (x i) (lean-proof "exact AE.w3_c124_w2")))
sp-acj4-127-condf
the two sides differ at every admissible point
witness (false): \(x = 1\)
SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]
Lean proof: included
(case sp-acj4-127-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (!= (exp x) 1)) (assume (!= (exp x) -1)) (ask (= (abs (atanh (exp x))) (atanh (exp x)))) (expect false) (witness false (x 1)) (lean-proof "exact AE.w2_c127 x h0 h1 h2"))
sp-acj4-128-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-128-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.abs_ofReal, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-128-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-128-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c128 x hd0 h0"))
sp-acj4-129-cond
equal at some admissible points, different at others
witness (true): \(x = \frac{1}{2} \, i\)
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-129-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (ask (= (abs (cos (atan x))) (cos (atan x)))) (expect contingent) (witness true (x (* 1/2 i)) (lean-proof "exact AE.w3_c129_w1")) (witness false (x (* 2 i)) (lean-proof "exact AE.w3_c129_w2")))
sp-acj4-130-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]
Lean proof: included
(case sp-acj4-130-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]") (var x real) (assume (< (abs x) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hr' := abs_lt.mp hr; have hc : 0 < Real.cos r := Real.cos_pos_of_mem_Ioo ⟨hr'.1, hr'.2⟩; refine ⟨by simp; rw [← Complex.ofReal_cos]; exact_mod_cast hc.ne', ?_⟩; rw [AE.cos_ofReal, AE.log_ofReal hc.le, AE.abs_ofReal, AE.inv_ofReal, AE.log_ofReal (inv_nonneg.mpr hc.le), Real.log_inv, abs_of_nonpos (Real.log_nonpos hc.le (Real.cos_le_one r))]"))
sp-acj4-131-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-131-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (log (cosh x))) (log (cosh x)))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c131_w1")) (witness false (x i) (lean-proof "exact AE.w3_c131_w2")))
sp-acj4-132-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-132-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (assume (nonzero (sin x))) (ask (= (abs (log (sin x))) (- (log (sin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have ha : 0 ≤ r := (by simpa using h0.2); have hb : r ≤ Real.pi := (by simpa using h1.2); have hs : 0 ≤ Real.sin r := Real.sin_nonneg_of_nonneg_of_le_pi ha hb; refine ⟨by simpa using h2.2, ?_⟩; rw [AE.sin_ofReal, AE.log_ofReal hs, AE.abs_ofReal, abs_of_nonpos (Real.log_nonpos hs (Real.sin_le_one r))]; push_cast; rfl"))
sp-acj4-133-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-133-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (tanh x))) (ask (= (abs (log (tanh x))) (- (log (tanh x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c133 x h0 h1 h2"))
sp-acj4-136-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-136-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (ask (= (abs (pow x (exp 1))) (pow x (exp 1)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) (AE.exp 1) := (AE.pow.D_iff _ _).mpr (Or.inr (by rw [AE.cond_exp_one_eq, Complex.ofReal_re]; exact Real.exp_pos 1)); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_abs_pow_ofReal hr (Real.exp_pos 1).ne']"))
sp-acj4-137-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-137-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re pi) 0))) (ask (= (abs (pow x pi)) (pow x pi))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) AE.pi := (AE.pow.D_iff _ _).mpr (Or.inr (by simp [Real.pi_pos])); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.pi_def, AE.cond_abs_pow_ofReal hr Real.pi_ne_zero]"))
sp-acj4-145-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-145-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.asin_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cos_ofReal, AE.abs_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-145-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-145-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c145 x hd0 h0"))
sp-acj4-147-cond
equal at some admissible points, different at others
witness (true): \(x = 2 \, i\)
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-147-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh (asinh x)))) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (abs (tanh (asinh x))) (cos (atan (/ x))))) (expect contingent) (witness true (x (* 2 i)) (lean-proof "exact AE.w3_c147_w1")) (witness false (x (* 1/2 i)) (lean-proof "exact AE.w3_c147_w2")))
sp-acj4-151-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-151-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-156-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-156-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-159-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-159-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-159-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-159-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-162-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-162-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (real x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 ≤ r := (by simpa using h0.2); have hs : AE.surd (↑r) 5 = AE.pow (↑r) (1/5) := (by rw [AE.surd, if_pos (by simpa using hr)]; norm_num [AE.inv_def]); rw [hs]; refine ⟨⟨⟨?_, by simp⟩, (AE.pow.D_iff _ _).mpr (Or.inr (by norm_num)), by simp⟩, rfl⟩; rw [AE.surd.D_iff]; exact ⟨by simp, ⟨5, by norm_num⟩, by norm_num, Or.inl (by simpa using hr), Or.inr (by norm_num)⟩"))
sp-acj4-162-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]
Lean proof: included
(case sp-acj4-162-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]") (var x real) (assume (negative x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c162 x hd0 h0"))
sp-acj4-171-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-171-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)") (var x complex) (assume (< (abs (im x)) pi)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh 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 (+ 1/2 (* (/ pi 2) i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c171w2 | exact AE.w2_c171_cosh | exact AE.w2_c171_tanhD | exact AE.w2_c171_lt | 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-171-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-171-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); refine ⟨by simp; simpa using h1.2, ?_⟩; rw [hS, AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh]"))
sp-acj4-179-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-179-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (acos x)) i)) (assume (!= (sinh (acos x)) (- i))) (assume (nonzero (cosh (acos x)))) (ask (= (atan (sinh (acos x))) (asin (tanh (acos x))))) (expect true))
sp-acj4-180-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]
(case sp-acj4-180-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-181-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-181-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (asin x)) i)) (assume (!= (sinh (asin x)) (- i))) (assume (nonzero (cosh (asin x)))) (ask (= (atan (sinh (asin x))) (asin (tanh (asin x))))) (expect true))
sp-acj4-183-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]
(case sp-acj4-183-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-186-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-186-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos (sin x)))) (assume (!= (tan (sin x)) i)) (assume (!= (tan (sin x)) (- i))) (ask (= (atan (tan (sin x))) (sin x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.sin (↑y * Complex.I) = ↑(Real.sinh y) * Complex.I := (by rw [AE.sin_eq, AE.cond_sin_mul_I']); rw [hS] at h2 h3 ⊢; have hT : AE.tan (↑(Real.sinh y) * Complex.I) = ↑(Real.tanh (Real.sinh y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h2 h3 ⊢; refine ⟨⟨⟨⟨by simp, h2.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-187-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-187-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (cos (tanh x)))) (assume (!= (tan (tanh x)) i)) (assume (!= (tan (tanh x)) (- i))) (ask (= (atan (tan (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h3 h4 ⊢; have hT : AE.tan (↑(Real.tan y) * Complex.I) = ↑(Real.tanh (Real.tan y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h3 h4 ⊢; refine ⟨⟨⟨⟨h3.1.1, h3.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h3.2, by rw [← AE.i_def]; exact h4.2⟩⟩, h3.1.1⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-190-condf
the two sides differ at every admissible point
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-190-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect false) (witness false (x (* 1/2 i))) (lean-proof "exact AE.w2_c190 x h0 h1 h2 h3 h4 h5"))
sp-acj4-191-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-191-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c191 x h0 h1 h2 h3"))
sp-acj4-196-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-196-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (!= (sin (tanh x)) 1)) (assume (!= (sin (tanh x)) -1)) (assume (nonzero (cos (tanh x)))) (ask (= (atanh (sin (tanh x))) (asinh (tan (tanh x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h2 h3 h4 ⊢; rw [AE.sin_eq, AE.cond_sin_mul_I'] at h2 h3 ⊢; refine ⟨⟨⟨⟨h2.1.1, by simp⟩, (AE.atanh.D_iff _).mpr ⟨h2.2, h3.2⟩⟩, ⟨⟨h2.1.1, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, by simp⟩⟩, ?_⟩; rw [AE.cond_atanh_mul_I, AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-20-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-20-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sinh (abs x)) (abs (sinh x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c20 x h0"))
sp-acj4-200-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-200-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (cos (asin (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-202-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-202-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (assume (!= (tan x) i)) (assume (!= (tan x) (- i))) (ask (= (cos (atan (tan x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨h2.1, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, by simp⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-203-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-203-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨⟨h1.2, h2.2⟩, by simp⟩, h1.2, by simp⟩, ?_⟩; simp [Complex.cos_neg]"))
sp-acj4-205-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-205-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (ask (= (cosh (asinh (tan x))) (abs (/ (cos x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨(AE.tan.D_iff _).mpr (by simpa using h1.2), by simp⟩, by simp⟩, ⟨⟨by simp, h1.2⟩, by simp⟩⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_eq, AE.cond_cosh_mul_I', Real.cos_arcsin, AE.cond_one_sub_tanh_sq, Real.sqrt_inv, Real.sqrt_sq (Real.cosh_pos y).le, AE.cos_eq, AE.cond_cos_mul_I', AE.inv_def, ← Complex.ofReal_inv, AE.abs_ofReal, abs_of_pos (inv_pos.mpr (Real.cosh_pos y))]"))
sp-acj4-234-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-234-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h3.2))⟩, ?_⟩; rw [AE.cond_inv_pow_of h3.2, AE.cond_pow_inv_left_of h3.2 (Or.inl hre)]"))
sp-acj4-234-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-234-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h2.2; refine ⟨⟨⟨h1.1.1, h1.2⟩, hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, ?_⟩; rw [AE.inv_def, AE.inv_def, AE.cond_pow_intCast' hn, AE.cond_pow_intCast' (inv_ne_zero hn), inv_zpow]"))
sp-acj4-243-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-243-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 5))) (assume (nonzero x)) (ask (= (log (surd x 5)) (/ (log x) 5))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (5:ℂ) = ((5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-245-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-245-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 7))) (assume (nonzero x)) (ask (= (log (surd x 7)) (/ (log x) 7))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (7:ℂ) = ((7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-248-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-248-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (- (abs (asin x))) (asin (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.asin_ofReal (by linarith) (by linarith [abs_nonneg r]), Real.arcsin_neg, AE.cond_arcsin_abs]; push_cast; rfl"))
sp-acj4-251-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-251-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (assume (!= (- (abs x)) 1)) (assume (!= (- (abs x)) -1)) (ask (= (- (abs (atanh x))) (atanh (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h1, h2]; exact ⟨by norm_cast; intro h; linarith [abs_nonneg r], by norm_cast; intro h; linarith⟩, ?_⟩; rw [AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.atanh_ofReal (by linarith) (by linarith [abs_nonneg r]), AE.cond_artanh_neg', AE.cond_artanh_abs]; push_cast; rfl"))
sp-acj4-260-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]
Lean proof: included
(case sp-acj4-260-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]") (var x complex) (assume (< (abs (re x)) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "have hb : |x.re| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hb' := abs_lt.mp hb; have hc : 0 < (AE.cos x).re := (by rw [AE.cos_eq, AE.cond_cos_re]; exact mul_pos (Real.cos_pos_of_mem_Ioo ⟨hb'.1, hb'.2⟩) (Real.cosh_pos _)); refine ⟨⟨h2.1.1, h2.1.1, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hc.le)]"))
sp-acj4-261-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-261-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w1 | exact AE.w2_cosh_one_ne | exact AE.w2_inv_cosh_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, AE.w2_ccosh_one_ne]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w2 | exact AE.w2_cosh_xpi_ne | exact AE.w2_inv_cosh_xpi_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-266-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-266-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, ?_⟩; simp [Complex.sin_neg]"))
sp-acj4-266-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-266-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c266_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c266_w2")))
sp-acj4-267-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-267-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; refine ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, ?_⟩; simp [Complex.tan_neg]"))
sp-acj4-267-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-267-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c267 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-283-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-283-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 2) (* x x))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c283 x h0"))
sp-acj4-287-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]
Lean proof: included
(case sp-acj4-287-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 6) (pow x 6))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c287 x h0"))
sp-acj4-289-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-289-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 8) (pow x 8))) (expect true) (lean-proof "have hre : x.re = 0 := (by simpa using h0.2.1); have hx : x ≠ 0 := h0.2.2; have ha : AE.abs x ≠ 0 := (by rw [AE.abs_eq]; exact_mod_cast norm_ne_zero_iff.mpr hx); refine ⟨⟨⟨by simp, (AE.pow.D_iff _ _).mpr (Or.inl ha)⟩, (AE.pow.D_iff _ _).mpr (Or.inl hx)⟩, ?_⟩; rw [show (8:ℂ) = ((8:ℕ):ℂ) by norm_num, AE.cond_pow_natCast' ha, AE.cond_pow_natCast' hx, AE.abs_eq, AE.cond_norm_pow_eight_of_re_zero hre]"))
sp-acj4-29-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-29-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (3:ℂ) = ((3:ℝ):ℂ) by norm_num, AE.cond_log_pow_ofReal hr]"))
sp-acj4-29-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]
Lean proof: included
(case sp-acj4-29-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c29 x h0 h1 h2"))
sp-acj4-334-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-334-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re (exp 1)) 0))) (ask (= (pow (exp x) (exp 1)) (exp (* (exp 1) x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-335-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-335-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re pi) 0))) (ask (= (pow (exp x) pi) (exp (* pi x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-336-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-336-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re x) 0))) (ask (= (pow (exp x) x) (exp (* x x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-344-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-344-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h1.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h1.2))⟩, (AE.pow.D_iff _ _).mpr (Or.inl h1.2)⟩, ?_⟩; rw [AE.cond_pow_inv_left_of h1.2 (Or.inl hre)]"))
sp-acj4-344-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-344-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; refine ⟨⟨⟨hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, (AE.pow.D_iff _ _).mpr (Or.inl hn)⟩, ?_⟩; rw [AE.inv_def, AE.cond_pow_intCast' (inv_ne_zero hn), show -(n:ℂ) = ((-n : ℤ) : ℂ) by push_cast; rfl, AE.cond_pow_intCast' hn, inv_zpow, zpow_neg]"))
sp-acj4-372-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-372-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (assume (nonzero (cosh x))) (ask (= (surd (cosh x) -5) (pow (cosh x) -1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_cosh_xpi_ne | exact AE.w2_c372_surdD | exact AE.w2_c372_powD | 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-373-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-373-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (ask (= (surd (cosh x) 5) (pow (cosh x) 1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_c373_surdD | exact AE.w2_c373_powD | 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-376-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]
Lean proof: included
(case sp-acj4-376-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]") (var x complex) (assume (< (abs (im x)) pi)) (assume (real (exp x))) (assume (nonzero (exp x))) (ask (= (surd (exp x) -3) (exp (/ x -3)))) (expect true) (lean-proof "have hb : |x.im| < Real.pi := (by simpa [AE.abs_ofReal] using h0.2); have hb' := abs_lt.mp hb; have hs : Real.sin x.im = 0 := (by have := h1.2; simp [Complex.exp_im] at this; exact this); have hi : x.im = 0 := (Real.sin_eq_zero_iff_of_lt_of_lt hb'.1 hb'.2).mp hs; obtain ⟨a, rfl⟩ := AE.IsReal.exists hi; rw [AE.exp_ofReal]; refine ⟨(by rw [AE.surd.D_iff]; exact ⟨by simp, ⟨-3, by norm_num⟩, by norm_num, Or.inl (by rw [Complex.ofReal_re]; exact (Real.exp_pos a).le), Or.inl (by exact_mod_cast (Real.exp_pos a).ne')⟩), ?_⟩; rw [show (-3:ℂ) = ((-3:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos a).le (by norm_num), ← Real.exp_mul]; simp only [AE.exp_def, AE.inv_def]; push_cast; ring_nf"))
sp-acj4-385-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-385-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (exp x))) (ask (= (surd (exp x) 3) (exp (/ x 3)))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w1 | 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, Complex.exp_im]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w2 | exact AE.w2_c385_real | exact AE.w2_c385_surdD | 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-392-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-392-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.sin_ofReal, AE.acos_ofReal hr'.1 hr'.2, AE.cos_ofReal, Real.cos_arccos hr'.1 hr'.2, AE.abs_ofReal, ← AE.cond_arcsin_abs, Real.sin_arcsin (by linarith [abs_nonneg r]) hr]"))
sp-acj4-394-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-394-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (abs (atanh x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c394w2 | 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-399-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-399-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sin (acos (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq ((y:ℂ) * Complex.I), AE.cond_sin_mul_I', AE.cond_acos_mul_I, Real.arsinh_sinh, AE.sin_eq, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y), show ((Real.pi/2 : ℝ):ℂ) - ↑y * Complex.I = ↑Real.pi/2 - ↑y * Complex.I by push_cast; ring, Complex.sin_pi_div_two_sub, AE.cond_cos_mul_I']"))
sp-acj4-402-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-402-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (atanh (abs x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c402w2 | 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-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-403-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; exact ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, rfl⟩"))
sp-acj4-403-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-403-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c403_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c403_w2")))
sp-acj4-412-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-412-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (abs (asin x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (abs (asin x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.asin_ofReal hr'.1.le hr'.2.le, AE.abs_ofReal, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-416-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-416-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.acos_ofReal (by linarith [abs_nonneg r]) hr, AE.acos_ofReal hr'.1 hr'.2, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, Real.tan_arccos, Real.tan_arccos, abs_div, abs_of_nonneg (Real.sqrt_nonneg _), sq_abs]"))
sp-acj4-417-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-417-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (asin (abs x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (asin (abs x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr.le, AE.asin_ofReal hr'.1.le hr'.2.le, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_arcsin_abs, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-420-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-420-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; exact ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, rfl⟩"))
sp-acj4-420-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-420-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c420 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-422-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-422-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (abs (asinh x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c422 x h0 h1 h2 h3"))
sp-acj4-424-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-424-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (asinh (abs x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c424 x h0 h1 h2 h3"))
sp-acj4-428-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-428-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-428-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-428-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-430-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-430-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-430-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-430-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; have h0' : r ≠ 0 := (by simpa using h1.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_self_ofReal hr h0', mul_comm]"))
sp-acj4-432-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-432-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (abs (tanh x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.tanh_ofReal, AE.abs_ofReal, ← AE.cond_tanh_abs, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-433-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-433-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h5 h6 ⊢; have hD : AE.atan.D (-AE.log x) := (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩; exact ⟨⟨⟨h1.2, hD⟩, ⟨h1.2, h4.2⟩, hD⟩, rfl⟩"))
sp-acj4-433-condf
the two sides differ at every admissible point
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]
Lean proof: included
(case sp-acj4-433-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]") (var x real) (assume (negative x)) (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 false) (witness false (x -2)) (lean-proof "exact AE.w2_c433 x hd0 h0 h1 h2 h3 h4 h5 h6"))
sp-acj4-442-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-442-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hi : (AE.log (↑y * Complex.I)).im ≠ 0 := (by rw [AE.log_def, Complex.log_im, Ne, Complex.arg_eq_zero_iff]; simp [hy]); refine ⟨⟨⟨h1.2, h2.2⟩, ⟨h1.2, h2.2⟩, h3.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inr hi)]"))
sp-acj4-442-cond4
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-442-cond4 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]") (var x integer) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; have hn' : n ≠ 0 := (by exact_mod_cast hn); have hre : 0 ≤ (AE.log (n:ℂ)).re := (by rw [AE.log_def, Complex.log_re]; apply Real.log_nonneg; rw [Complex.norm_intCast]; exact_mod_cast Int.one_le_abs hn'); refine ⟨⟨⟨h1.1.1, h1.2⟩, ⟨h1.1.1, h1.2⟩, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hre)]"))
sp-acj4-46-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-46-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (pow 2 x))) (ask (= (* (log 2) x) (log (pow 2 x)))) (expect true) (lean-proof "simp at h0; have hl := Real.log_pos one_lt_two; have hl2 := Real.log_two_lt_d9; have e : (x * Complex.log 2).im = x.im * Real.log 2 := (by rw [AE.cond_log_two_eq, Complex.mul_im, Complex.ofReal_im, Complex.ofReal_re]; ring); refine ⟨⟨two_ne_zero, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cond_log_pow_of_im two_ne_zero (by rw [e]; nlinarith [Real.pi_pos]) (by rw [e]; nlinarith [Real.pi_pos]), mul_comm]"))
sp-acj4-5-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-5-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (atanh (abs x)) (abs (atanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h2, h3]; exact ⟨by intro h; linarith, by intro h; have := congrArg Complex.re h; simp at this; linarith [abs_nonneg r]⟩, ?_⟩; rw [AE.abs_ofReal, AE.atanh_ofReal (by linarith [abs_nonneg r]) hr, AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_artanh_abs]"))
sp-acj4-55-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-55-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]") (var x real) (assume (positive x)) (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 true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-56-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.pi_def, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]
Lean proof: included
(case sp-acj4-56-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c56 x h0 h1 h2 h3"))
sp-acj4-9-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-9-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (exp x))) (ask (= (log (exp x)) x)) (expect true) (lean-proof "simp at h0; exact ⟨Complex.exp_ne_zero _, AE.log_exp_of_im h0.1 h0.2⟩"))
Case set ee702ae2fe06
sp-acj4-1-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-1-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[1] + rules.json[0]: asin abs _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (asin (abs x)) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arcsin_abs]"))
sp-acj4-108-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-108-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[108] + rules.json[87]: / abs _0 _0 -> / _0 abs _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (abs x))) (ask (= (/ (abs x) x) (/ x (abs x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c108 x h0 h1 h2"))
sp-acj4-124-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-124-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[124]: abs asin tanh !0 -> acos inv cosh !0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (asin (tanh x))) (acos (/ (cosh x))))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c124_w1")) (witness false (x i) (lean-proof "exact AE.w3_c124_w2")))
sp-acj4-127-condf
the two sides differ at every admissible point
witness (false): \(x = 1\)
SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]
Lean proof: included
(case sp-acj4-127-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[127] + rules.json[96]: abs atanh exp _0 -> atanh exp _0 [false under: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (!= (exp x) 1)) (assume (!= (exp x) -1)) (ask (= (abs (atanh (exp x))) (atanh (exp x)))) (expect false) (witness false (x 1)) (lean-proof "exact AE.w2_c127 x h0 h1 h2"))
sp-acj4-128-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-128-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.abs_ofReal, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-128-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-128-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[128] + rules.json[97]: abs cos asin _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (cos (asin x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c128 x hd0 h0"))
sp-acj4-129-cond
equal at some admissible points, different at others
witness (true): \(x = \frac{1}{2} \, i\)
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-129-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[129] + rules.json[98]: abs cos atan _0 -> cos atan _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (ask (= (abs (cos (atan x))) (cos (atan x)))) (expect contingent) (witness true (x (* 1/2 i)) (lean-proof "exact AE.w3_c129_w1")) (witness false (x (* 2 i)) (lean-proof "exact AE.w3_c129_w2")))
sp-acj4-130-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]
Lean proof: included
(case sp-acj4-130-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[130]: abs log cos _0 -> log inv cos _0 [weakest assumption found: abs-lt-pi2]") (var x real) (assume (< (abs x) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (abs (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hr' := abs_lt.mp hr; have hc : 0 < Real.cos r := Real.cos_pos_of_mem_Ioo ⟨hr'.1, hr'.2⟩; refine ⟨by simp; rw [← Complex.ofReal_cos]; exact_mod_cast hc.ne', ?_⟩; rw [AE.cos_ofReal, AE.log_ofReal hc.le, AE.abs_ofReal, AE.inv_ofReal, AE.log_ofReal (inv_nonneg.mpr hc.le), Real.log_inv, abs_of_nonpos (Real.log_nonpos hc.le (Real.cos_le_one r))]"))
sp-acj4-131-condf
equal at some admissible points, different at others
witness (true): \(x = 2 \, \pi \, i\)
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-131-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[131] + rules.json[99]: abs log cosh _0 -> log cosh _0 [false under: imaginary]; relabelled contingent: true at x = (* 2 pi i) (a probe the random samples miss)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (abs (log (cosh x))) (log (cosh x)))) (expect contingent) (witness true (x (* 2 pi i)) (lean-proof "exact AE.w3_c131_w1")) (witness false (x i) (lean-proof "exact AE.w3_c131_w2")))
sp-acj4-132-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-132-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[132] + rules.json[100]: abs log sin _0 -> neg log sin _0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (assume (nonzero (sin x))) (ask (= (abs (log (sin x))) (- (log (sin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have ha : 0 ≤ r := (by simpa using h0.2); have hb : r ≤ Real.pi := (by simpa using h1.2); have hs : 0 ≤ Real.sin r := Real.sin_nonneg_of_nonneg_of_le_pi ha hb; refine ⟨by simpa using h2.2, ?_⟩; rw [AE.sin_ofReal, AE.log_ofReal hs, AE.abs_ofReal, abs_of_nonpos (Real.log_nonpos hs (Real.sin_le_one r))]; push_cast; rfl"))
sp-acj4-133-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-133-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[133] + rules.json[101]: abs log tanh _0 -> neg log tanh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (tanh x))) (ask (= (abs (log (tanh x))) (- (log (tanh x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c133 x h0 h1 h2"))
sp-acj4-136-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-136-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[136] + rules.json[104]: abs pow _0 np.e -> pow _0 np.e [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re (exp 1)) 0))) (ask (= (abs (pow x (exp 1))) (pow x (exp 1)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) (AE.exp 1) := (AE.pow.D_iff _ _).mpr (Or.inr (by rw [AE.cond_exp_one_eq, Complex.ofReal_re]; exact Real.exp_pos 1)); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_abs_pow_ofReal hr (Real.exp_pos 1).ne']"))
sp-acj4-137-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]
Lean proof: included
(case sp-acj4-137-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[137] + rules.json[105]: abs pow _0 np.pi -> pow _0 np.pi [weakest assumption found: nonnegative]") (var x real) (assume (nonnegative x)) (assume (or (nonzero x) (> (re pi) 0))) (ask (= (abs (pow x pi)) (pow x pi))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 ≤ r := (by simpa using h0.2); have hD : AE.pow.D (↑r) AE.pi := (AE.pow.D_iff _ _).mpr (Or.inr (by simp [Real.pi_pos])); refine ⟨⟨⟨hD, by simp⟩, hD⟩, ?_⟩; rw [AE.pi_def, AE.cond_abs_pow_ofReal hr Real.pi_ne_zero]"))
sp-acj4-145-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-145-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.asin_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cos_ofReal, AE.abs_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, abs_of_nonneg (Real.cos_arcsin_nonneg r)]"))
sp-acj4-145-condf
the two sides differ at every admissible point
witness (false): \(x = 2\)
SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]
Lean proof: included
(case sp-acj4-145-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[145] + rules.json[113]: abs sin acos _0 -> cos asin _0 [false under: gt-1]") (var x real) (assume (> x 1)) (ask (= (abs (sin (acos x))) (cos (asin x)))) (expect false) (witness false (x 2)) (lean-proof "exact AE.w2_c145 x hd0 h0"))
sp-acj4-147-cond
equal at some admissible points, different at others
witness (true): \(x = 2 \, i\)
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)
Lean proof: included
(case sp-acj4-147-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[147]: abs tanh asinh _0 -> cos atan inv _0 [weakest assumption found: imaginary]; relabelled contingent: false at x = (* 1/2 i) (atan is specified on its branch cuts since harness PR #19)") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh (asinh x)))) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (abs (tanh (asinh x))) (cos (atan (/ x))))) (expect contingent) (witness true (x (* 2 i)) (lean-proof "exact AE.w3_c147_w1")) (witness false (x (* 1/2 i)) (lean-proof "exact AE.w3_c147_w2")))
sp-acj4-151-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-151-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[151]: acos cos asin _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (cos (asin x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.cos_ofReal, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-156-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-156-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[156]: acos sin acos _0 -> abs asin _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (acos (sin (acos x))) (abs (asin x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.acos_ofReal hr'.1 hr'.2, AE.sin_ofReal, AE.cond_sin_arccos_eq_cos_arcsin, AE.acos_ofReal (AE.cond_cos_mem _).1 (AE.cond_cos_mem _).2, AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_arccos_cos_arcsin]"))
sp-acj4-159-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-159-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-159-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-159-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[159]: acos tanh abs _0 -> asin inv cosh _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (tanh (abs x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.abs_ofReal, AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.abs_ofReal, AE.tanh_ofReal, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-162-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-162-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (real x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 ≤ r := (by simpa using h0.2); have hs : AE.surd (↑r) 5 = AE.pow (↑r) (1/5) := (by rw [AE.surd, if_pos (by simpa using hr)]; norm_num [AE.inv_def]); rw [hs]; refine ⟨⟨⟨?_, by simp⟩, (AE.pow.D_iff _ _).mpr (Or.inr (by norm_num)), by simp⟩, rfl⟩; rw [AE.surd.D_iff]; exact ⟨by simp, ⟨5, by norm_num⟩, by norm_num, Or.inl (by simpa using hr), Or.inr (by norm_num)⟩"))
sp-acj4-162-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]
Lean proof: included
(case sp-acj4-162-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[162] + rules.json[119]: acosh rootn _0 5 -> acosh pow _0 0.2 [false under: negative]") (var x real) (assume (negative x)) (ask (= (acosh (surd x 5)) (acosh (pow x 1/5)))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c162 x hd0 h0"))
sp-acj4-171-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-171-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: im-lt-pi]; relabelled contingent: false at x = (+ 1/2 (* (/ pi 2) i)) (a probe the random samples miss)") (var x complex) (assume (< (abs (im x)) pi)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh 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 (+ 1/2 (* (/ pi 2) i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c171w2 | exact AE.w2_c171_cosh | exact AE.w2_c171_tanhD | exact AE.w2_c171_lt | 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-171-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-171-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[171] + rules.json[125]: asin sin tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (ask (= (asin (sin (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); refine ⟨by simp; simpa using h1.2, ?_⟩; rw [hS, AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh]"))
sp-acj4-179-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-179-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[179] + rules.json[128]: atan sinh acos _0 -> asin tanh acos _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (acos x)) i)) (assume (!= (sinh (acos x)) (- i))) (assume (nonzero (cosh (acos x)))) (ask (= (atan (sinh (acos x))) (asin (tanh (acos x))))) (expect true))
sp-acj4-180-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]
(case sp-acj4-180-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[180]: atan sinh acosh _0 -> asin tanh acosh _0 [weakest assumption found: re-pos; was re-nonneg, false at x = i on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-181-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]
(case sp-acj4-181-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[181] + rules.json[129]: atan sinh asin _0 -> asin tanh asin _0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (!= (sinh (asin x)) i)) (assume (!= (sinh (asin x)) (- i))) (assume (nonzero (cosh (asin x)))) (ask (= (atan (sinh (asin x))) (asin (tanh (asin x))))) (expect true))
sp-acj4-183-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]
(case sp-acj4-183-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[183]: atan sinh log _0 -> asin tanh log _0 [weakest assumption found: re-pos; was re-nonneg, false at x = (* 2 i) on the atan cut since harness PR #19]") (var x complex) (assume (> (re x) 0)) (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 true))
sp-acj4-186-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-186-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[186] + rules.json[133]: atan tan sin _0 -> sin _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos (sin x)))) (assume (!= (tan (sin x)) i)) (assume (!= (tan (sin x)) (- i))) (ask (= (atan (tan (sin x))) (sin x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.sin (↑y * Complex.I) = ↑(Real.sinh y) * Complex.I := (by rw [AE.sin_eq, AE.cond_sin_mul_I']); rw [hS] at h2 h3 ⊢; have hT : AE.tan (↑(Real.sinh y) * Complex.I) = ↑(Real.tanh (Real.sinh y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h2 h3 ⊢; refine ⟨⟨⟨⟨by simp, h2.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-187-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-187-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[187] + rules.json[134]: atan tan tanh _0 -> tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (nonzero (cos (tanh x)))) (assume (!= (tan (tanh x)) i)) (assume (!= (tan (tanh x)) (- i))) (ask (= (atan (tan (tanh x))) (tanh x))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h3 h4 ⊢; have hT : AE.tan (↑(Real.tan y) * Complex.I) = ↑(Real.tanh (Real.tan y)) * Complex.I := (by rw [AE.tan_eq, AE.cond_tan_mul_I']); rw [hT] at h3 h4 ⊢; refine ⟨⟨⟨⟨h3.1.1, h3.1.2⟩, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h3.2, by rw [← AE.i_def]; exact h4.2⟩⟩, h3.1.1⟩, ?_⟩; rw [AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh]"))
sp-acj4-190-condf
the two sides differ at every admissible point
witness (false): \(x = \frac{1}{2} \, i\)
SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-190-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[190]: atanh cos atan _0 -> abs asinh inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= x i)) (assume (!= x (- i))) (assume (!= (cos (atan x)) 1)) (assume (!= (cos (atan x)) -1)) (assume (nonzero x)) (ask (= (atanh (cos (atan x))) (abs (asinh (/ x))))) (expect false) (witness false (x (* 1/2 i))) (lean-proof "exact AE.w2_c190 x h0 h1 h2 h3 h4 h5"))
sp-acj4-191-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-191-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[191]: atanh sin acos _0 -> acosh abs inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (!= (sin (acos x)) 1)) (assume (!= (sin (acos x)) -1)) (assume (nonzero x)) (ask (= (atanh (sin (acos x))) (acosh (abs (/ x))))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c191 x h0 h1 h2 h3"))
sp-acj4-196-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-196-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[196] + rules.json[138]: atanh sin tanh _0 -> asinh tan tanh _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cosh x))) (assume (!= (sin (tanh x)) 1)) (assume (!= (sin (tanh x)) -1)) (assume (nonzero (cos (tanh x)))) (ask (= (atanh (sin (tanh x))) (asinh (tan (tanh x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hS : AE.tanh (↑y * Complex.I) = ↑(Real.tan y) * Complex.I := (by rw [AE.tanh_eq, AE.cond_tanh_mul_I']); rw [hS] at h2 h3 h4 ⊢; rw [AE.sin_eq, AE.cond_sin_mul_I'] at h2 h3 ⊢; refine ⟨⟨⟨⟨h2.1.1, by simp⟩, (AE.atanh.D_iff _).mpr ⟨h2.2, h3.2⟩⟩, ⟨⟨h2.1.1, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, by simp⟩⟩, ?_⟩; rw [AE.cond_atanh_mul_I, AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-20-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-20-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[20] + rules.json[15]: sinh abs _0 -> abs sinh _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sinh (abs x)) (abs (sinh x)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c20 x h0"))
sp-acj4-200-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-200-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[200]: cos asin sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (cos (asin (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq, AE.cond_sin_mul_I', AE.cond_asin_mul_I, Real.arsinh_sinh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-202-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-202-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[202]: cos atan tan _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (assume (!= (tan x) i)) (assume (!= (tan x) (- i))) (ask (= (cos (atan (tan x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨h2.1, (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩⟩, by simp⟩, by simp⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_atan_mul_I (Real.neg_one_lt_tanh _) (Real.tanh_lt_one _), Real.artanh_tanh, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y)]"))
sp-acj4-203-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-203-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[203]: cos log inv _0 -> cos log _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (cos (log (/ x))) (cos (log x)))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨⟨h1.2, h2.2⟩, by simp⟩, h1.2, by simp⟩, ?_⟩; simp [Complex.cos_neg]"))
sp-acj4-205-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-205-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[205] + rules.json[140]: cosh asinh tan _0 -> abs inv cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero (cos x))) (ask (= (cosh (asinh (tan x))) (abs (/ (cos x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨⟨⟨⟨(AE.tan.D_iff _).mpr (by simpa using h1.2), by simp⟩, by simp⟩, ⟨⟨by simp, h1.2⟩, by simp⟩⟩, ?_⟩; rw [AE.tan_eq, AE.cond_tan_mul_I', AE.cond_asinh_mul_I_of (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_eq, AE.cond_cosh_mul_I', Real.cos_arcsin, AE.cond_one_sub_tanh_sq, Real.sqrt_inv, Real.sqrt_sq (Real.cosh_pos y).le, AE.cos_eq, AE.cond_cos_mul_I', AE.inv_def, ← Complex.ofReal_inv, AE.abs_ofReal, abs_of_pos (inv_pos.mpr (Real.cosh_pos y))]"))
sp-acj4-234-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-234-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h3.2))⟩, ?_⟩; rw [AE.cond_inv_pow_of h3.2, AE.cond_pow_inv_left_of h3.2 (Or.inl hre)]"))
sp-acj4-234-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-234-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[234]: inv pow _0 _0 -> pow inv _0 _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h2.2; refine ⟨⟨⟨h1.1.1, h1.2⟩, hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, ?_⟩; rw [AE.inv_def, AE.inv_def, AE.cond_pow_intCast' hn, AE.cond_pow_intCast' (inv_ne_zero hn), inv_zpow]"))
sp-acj4-243-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-243-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[243]: log rootn _0 5 -> / log _0 5 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 5))) (assume (nonzero x)) (ask (= (log (surd x 5)) (/ (log x) 5))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (5:ℂ) = ((5:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-245-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]
Lean proof: included
(case sp-acj4-245-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[245]: log rootn _0 7 -> / log _0 7 [weakest assumption found: re-pos]") (var x complex) (assume (> (re x) 0)) (assume (real x)) (assume (nonzero (surd x 7))) (assume (nonzero x)) (ask (= (log (surd x 7)) (/ (log x) 7))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists (by simpa using h1.2); have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨⟨h2.1.1, h2.2⟩, h3.2⟩, ?_⟩; rw [show (7:ℂ) = ((7:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg hr.le (by norm_num), AE.log_ofReal (Real.rpow_nonneg hr.le _), AE.log_ofReal hr.le, Real.log_rpow hr]; simp only [AE.inv_def]; push_cast; ring"))
sp-acj4-248-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-248-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[248] + rules.json[164]: neg abs asin _0 -> asin neg abs _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (- (abs (asin x))) (asin (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.asin_ofReal (by linarith) (by linarith [abs_nonneg r]), Real.arcsin_neg, AE.cond_arcsin_abs]; push_cast; rfl"))
sp-acj4-251-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-251-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[251] + rules.json[167]: neg abs atanh _0 -> atanh neg abs _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (assume (!= (- (abs x)) 1)) (assume (!= (- (abs x)) -1)) (ask (= (- (abs (atanh x))) (atanh (- (abs x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h1, h2]; exact ⟨by norm_cast; intro h; linarith [abs_nonneg r], by norm_cast; intro h; linarith⟩, ?_⟩; rw [AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.abs_ofReal, show -((|r| : ℝ) : ℂ) = ((-|r| : ℝ) : ℂ) by push_cast; rfl, AE.atanh_ofReal (by linarith) (by linarith [abs_nonneg r]), AE.cond_artanh_neg', AE.cond_artanh_abs]; push_cast; rfl"))
sp-acj4-260-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]
Lean proof: included
(case sp-acj4-260-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[260]: neg log cos _0 -> log inv cos _0 [weakest assumption found: re-lt-pi2]") (var x complex) (assume (< (abs (re x)) (/ pi 2))) (assume (nonzero (cos x))) (assume (nonzero (/ (cos x)))) (ask (= (- (log (cos x))) (log (/ (cos x))))) (expect true) (lean-proof "have hb : |x.re| < Real.pi / 2 := (by simpa [AE.abs_ofReal, div_eq_mul_inv] using h0.2); have hb' := abs_lt.mp hb; have hc : 0 < (AE.cos x).re := (by rw [AE.cos_eq, AE.cond_cos_re]; exact mul_pos (Real.cos_pos_of_mem_Ioo ⟨hb'.1, hb'.2⟩) (Real.cosh_pos _)); refine ⟨⟨h2.1.1, h2.1.1, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hc.le)]"))
sp-acj4-261-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-261-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[261]: neg log cosh _0 -> log inv cosh _0 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (nonzero (cosh x))) (assume (nonzero (/ (cosh x)))) (ask (= (- (log (cosh x))) (log (/ (cosh x))))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w1 | exact AE.w2_cosh_one_ne | exact AE.w2_inv_cosh_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, AE.w2_ccosh_one_ne]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c261w2 | exact AE.w2_cosh_xpi_ne | exact AE.w2_inv_cosh_xpi_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-266-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-266-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; refine ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, ?_⟩; simp [Complex.sin_neg]"))
sp-acj4-266-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-266-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[266]: neg sin log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (- (sin (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c266_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c266_w2")))
sp-acj4-267-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-267-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; refine ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, ?_⟩; simp [Complex.tan_neg]"))
sp-acj4-267-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-267-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[267]: neg tan log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (log x)))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (- (tan (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c267 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-283-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-283-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[283] + rules.json[192]: pow abs _0 2 -> * _0 _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 2) (* x x))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c283 x h0"))
sp-acj4-287-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]
Lean proof: included
(case sp-acj4-287-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[287] + rules.json[196]: pow abs _0 6 -> pow _0 6 [false under: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 6) (pow x 6))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c287 x h0"))
sp-acj4-289-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-289-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[289] + rules.json[198]: pow abs _0 8 -> pow _0 8 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (pow (abs x) 8) (pow x 8))) (expect true) (lean-proof "have hre : x.re = 0 := (by simpa using h0.2.1); have hx : x ≠ 0 := h0.2.2; have ha : AE.abs x ≠ 0 := (by rw [AE.abs_eq]; exact_mod_cast norm_ne_zero_iff.mpr hx); refine ⟨⟨⟨by simp, (AE.pow.D_iff _ _).mpr (Or.inl ha)⟩, (AE.pow.D_iff _ _).mpr (Or.inl hx)⟩, ?_⟩; rw [show (8:ℂ) = ((8:ℕ):ℂ) by norm_num, AE.cond_pow_natCast' ha, AE.cond_pow_natCast' hx, AE.abs_eq, AE.cond_norm_pow_eight_of_re_zero hre]"))
sp-acj4-29-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-29-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h2.1.1, h2.2⟩, ?_⟩; rw [show (3:ℂ) = ((3:ℝ):ℂ) by norm_num, AE.cond_log_pow_ofReal hr]"))
sp-acj4-29-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]
Lean proof: included
(case sp-acj4-29-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[29]: * 3 log _0 -> log pow _0 3 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (pow x 3))) (ask (= (* 3 (log x)) (log (pow x 3)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c29 x h0 h1 h2"))
sp-acj4-334-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-334-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[334]: pow exp _0 np.e -> exp * np.e _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re (exp 1)) 0))) (ask (= (pow (exp x) (exp 1)) (exp (* (exp 1) x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-335-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-335-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[335]: pow exp _0 np.pi -> exp * np.pi _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re pi) 0))) (ask (= (pow (exp x) pi) (exp (* pi x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-336-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-336-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[336]: pow exp _0 _0 -> exp * _0 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (or (nonzero (exp x)) (> (re x) 0))) (ask (= (pow (exp x) x) (exp (* x x)))) (expect true) (lean-proof "simp at h0; refine ⟨(AE.pow.D_iff _ _).mpr (Or.inl (Complex.exp_ne_zero x)), ?_⟩; rw [AE.cond_pow_exp_of_im h0.1 h0.2]"))
sp-acj4-344-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-344-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); refine ⟨⟨⟨h1.2, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using h1.2))⟩, (AE.pow.D_iff _ _).mpr (Or.inl h1.2)⟩, ?_⟩; rw [AE.cond_pow_inv_left_of h1.2 (Or.inl hre)]"))
sp-acj4-344-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-344-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[344]: pow inv _0 _0 -> pow _0 neg _0 [weakest assumption found: integer]") (var x integer) (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 true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; refine ⟨⟨⟨hn, (AE.pow.D_iff _ _).mpr (Or.inl (by simpa using hn))⟩, (AE.pow.D_iff _ _).mpr (Or.inl hn)⟩, ?_⟩; rw [AE.inv_def, AE.cond_pow_intCast' (inv_ne_zero hn), show -(n:ℂ) = ((-n : ℤ) : ℂ) by push_cast; rfl, AE.cond_pow_intCast' hn, inv_zpow, zpow_neg]"))
sp-acj4-372-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-372-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[372] + rules.json[240]: rootn cosh _0 (-5) -> pow cosh _0 -0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (assume (nonzero (cosh x))) (ask (= (surd (cosh x) -5) (pow (cosh x) -1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c372w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_cosh_xpi_ne | exact AE.w2_c372_surdD | exact AE.w2_c372_powD | 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-373-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-373-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[373] + rules.json[241]: rootn cosh _0 5 -> pow cosh _0 0.2 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (cosh x))) (ask (= (surd (cosh x) 5) (pow (cosh x) 1/5))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w1 | exact AE.w2_cosh_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, AE.w2_ccosh_one_ne, AE.w2_ccosh_one_im, AE.w2_ccosh_one_re, Real.cosh_pos]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c373w2 | exact AE.w2_real_cosh_xpi | exact AE.w2_c373_surdD | exact AE.w2_c373_powD | 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-376-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]
Lean proof: included
(case sp-acj4-376-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[376]: rootn exp _0 (-3) -> exp / _0 (-3) [weakest assumption found: im-lt-pi]") (var x complex) (assume (< (abs (im x)) pi)) (assume (real (exp x))) (assume (nonzero (exp x))) (ask (= (surd (exp x) -3) (exp (/ x -3)))) (expect true) (lean-proof "have hb : |x.im| < Real.pi := (by simpa [AE.abs_ofReal] using h0.2); have hb' := abs_lt.mp hb; have hs : Real.sin x.im = 0 := (by have := h1.2; simp [Complex.exp_im] at this; exact this); have hi : x.im = 0 := (Real.sin_eq_zero_iff_of_lt_of_lt hb'.1 hb'.2).mp hs; obtain ⟨a, rfl⟩ := AE.IsReal.exists hi; rw [AE.exp_ofReal]; refine ⟨(by rw [AE.surd.D_iff]; exact ⟨by simp, ⟨-3, by norm_num⟩, by norm_num, Or.inl (by rw [Complex.ofReal_re]; exact (Real.exp_pos a).le), Or.inl (by exact_mod_cast (Real.exp_pos a).ne')⟩), ?_⟩; rw [show (-3:ℂ) = ((-3:ℤ):ℂ) by norm_num, AE.surd_ofReal_nonneg (Real.exp_pos a).le (by norm_num), ← Real.exp_mul]; simp only [AE.exp_def, AE.inv_def]; push_cast; ring_nf"))
sp-acj4-385-cond
equal at some admissible points, different at others
witness (true): \(x = 1\)
witness (false): \(x = \frac{1}{2} + \pi \, i\)
SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-385-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[385]: rootn exp _0 3 -> exp / _0 3 [weakest assumption found: re-pos]; relabelled contingent: false at x = (+ 1/2 (* pi i)) (a probe the random samples miss)") (var x complex) (assume (> (re x) 0)) (assume (real (exp x))) (ask (= (surd (exp x) 3) (exp (/ x 3)))) (expect contingent) (witness true (x 1) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w1 | 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, Complex.exp_im]")) (witness false (x (+ 1/2 (* pi i))) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c385w2 | exact AE.w2_c385_real | exact AE.w2_c385_surdD | 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-392-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-392-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[392]: sin abs asin _0 -> abs cos acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (ask (= (sin (abs (asin x))) (abs (cos (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; refine ⟨by simp, ?_⟩; rw [AE.asin_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.sin_ofReal, AE.acos_ofReal hr'.1 hr'.2, AE.cos_ofReal, Real.cos_arccos hr'.1 hr'.2, AE.abs_ofReal, ← AE.cond_arcsin_abs, Real.sin_arcsin (by linarith [abs_nonneg r]) hr]"))
sp-acj4-394-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-394-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[394] + rules.json[242]: sin abs atanh _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (abs (atanh x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c394w2 | 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-399-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-399-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[399]: sin acos sin _0 -> abs cos _0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (ask (= (sin (acos (sin x))) (abs (cos x)))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; refine ⟨by simp, ?_⟩; rw [AE.sin_eq ((y:ℂ) * Complex.I), AE.cond_sin_mul_I', AE.cond_acos_mul_I, Real.arsinh_sinh, AE.sin_eq, AE.cos_eq, AE.cond_cos_mul_I', AE.abs_ofReal, abs_of_pos (Real.cosh_pos y), show ((Real.pi/2 : ℝ):ℂ) - ↑y * Complex.I = ↑Real.pi/2 - ↑y * Complex.I by push_cast; ring, Complex.sin_pi_div_two_sub, AE.cond_cos_mul_I']"))
sp-acj4-402-cond
equal at some admissible points, different at others
witness (true): \(x = 0\)
witness (false): \(x = \frac{999}{1000}\)
SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)
Lean proof: included
(case sp-acj4-402-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[402] + rules.json[246]: sin atanh abs _0 -> abs sin atanh _0 [weakest assumption found: abs-lt-1]; relabelled contingent: false at x = 999/1000 (a probe the random samples miss)") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (sin (atanh (abs x))) (abs (sin (atanh 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 999/1000) (lean-proof "constructorm* _ ∧ _ <;> first | exact AE.w2_c402w2 | 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-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-403-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL]; exact ⟨⟨⟨h1.2, by simp⟩, ⟨h1.2, h2.2⟩, by simp⟩, rfl⟩"))
sp-acj4-403-condf
equal at some admissible points, different at others
witness (true): \(x = -e^{\frac{\pi}{2}}\)
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)
Lean proof: included
(case sp-acj4-403-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[403]: sin neg log _0 -> sin log inv _0 [false under: negative]; relabelled contingent: true at x = (- (exp (/ pi 2))) (a probe the random samples miss)") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (/ x))) (ask (= (sin (- (log x))) (sin (log (/ x))))) (expect contingent) (witness true (x (- (exp (/ pi 2)))) (lean-proof "exact AE.w3_c403_w1")) (witness false (x -1) (lean-proof "exact AE.w3_c403_w2")))
sp-acj4-412-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-412-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[412] + rules.json[253]: tan abs asin _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (abs (asin x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (abs (asin x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.asin_ofReal hr'.1.le hr'.2.le, AE.abs_ofReal, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-416-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]
Lean proof: included
(case sp-acj4-416-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[416]: tan acos abs _0 -> abs tan acos _0 [weakest assumption found: abs-le-1]") (var x real) (assume (<= (abs x) 1)) (assume (nonzero (cos (acos (abs x))))) (assume (nonzero (cos (acos x)))) (ask (= (tan (acos (abs x))) (abs (tan (acos x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| ≤ 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_le.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.acos_ofReal (by linarith [abs_nonneg r]) hr, AE.acos_ofReal hr'.1 hr'.2, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, Real.tan_arccos, Real.tan_arccos, abs_div, abs_of_nonneg (Real.sqrt_nonneg _), sq_abs]"))
sp-acj4-417-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-417-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[417] + rules.json[257]: tan asin abs _0 -> abs tan asin _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero (cos (asin (abs x))))) (assume (nonzero (cos (asin x)))) (ask (= (tan (asin (abs x))) (abs (tan (asin x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; simp at h1 h2; refine ⟨by simp [h1, h2], ?_⟩; rw [AE.abs_ofReal, AE.asin_ofReal (by linarith [abs_nonneg r]) hr.le, AE.asin_ofReal hr'.1.le hr'.2.le, AE.tan_ofReal, AE.tan_ofReal, AE.abs_ofReal, AE.cond_arcsin_abs, AE.cond_tan_abs_of_mem (Real.neg_pi_div_two_lt_arcsin.mpr hr'.1) (Real.arcsin_lt_pi_div_two.mpr hr'.2)]"))
sp-acj4-420-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-420-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h4 ⊢; exact ⟨⟨⟨h1.2, (AE.tan.D_iff _).mpr (by simpa using h2.2)⟩, ⟨h1.2, h3.2⟩, (AE.tan.D_iff _).mpr (by simpa using h4.2)⟩, rfl⟩"))
sp-acj4-420-condf
the two sides differ at every admissible point
witness (false): \(x = -1\)
SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]
Lean proof: included
(case sp-acj4-420-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[420]: tan neg log _0 -> tan log inv _0 [false under: negative]") (var x real) (assume (negative x)) (assume (nonzero x)) (assume (nonzero (cos (- (log x))))) (assume (nonzero (/ x))) (assume (nonzero (cos (log (/ x))))) (ask (= (tan (- (log x))) (tan (log (/ x))))) (expect false) (witness false (x -1)) (lean-proof "exact AE.w2_c420 x hd0 h0 h1 h2 h3 h4"))
sp-acj4-422-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-422-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[422]: tanh abs asinh _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (abs (asinh x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c422 x h0 h1 h2 h3"))
sp-acj4-424-condf
the two sides differ at every admissible point
witness (false): \(x = 2 \, i\)
SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]
Lean proof: included
(case sp-acj4-424-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[424]: tanh asinh abs _0 -> cos atan inv _0 [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (!= (/ x) i)) (assume (!= (/ x) (- i))) (ask (= (tanh (asinh (abs x))) (cos (atan (/ x))))) (expect false) (witness false (x (* 2 i))) (lean-proof "exact AE.w2_c424 x h0 h1 h2 h3"))
sp-acj4-428-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]
Lean proof: included
(case sp-acj4-428-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: le-1]") (var x real) (assume (<= x 1)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-428-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]
Lean proof: included
(case sp-acj4-428-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[428]: atan sinh !0 -> asin tanh !0 [weakest assumption found: zero-pi]") (var x real) (assume (>= x 0)) (assume (<= x pi)) (ask (= (atan (sinh x)) (asin (tanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; refine ⟨⟨⟨trivial, by rw [AE.sinh_ofReal]; exact AE.atan.D_ofReal _⟩, by simp [AE.cosh_ofReal_ne_zero]⟩, ?_⟩; rw [AE.sinh_ofReal, AE.atan_ofReal, AE.tanh_ofReal, AE.asin_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cond_arctan_sinh]"))
sp-acj4-430-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-430-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-430-cond2
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-430-cond2 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[430]: * log ?0 ?0 -> log pow ?0 ?0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (nonzero x)) (assume (or (nonzero x) (> (re x) 0))) (assume (nonzero (pow x x))) (ask (= (* (log x) x) (log (pow x x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; have h0' : r ≠ 0 := (by simpa using h1.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_log_pow_self_ofReal hr h0', mul_comm]"))
sp-acj4-432-cond3
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]
Lean proof: included
(case sp-acj4-432-cond3 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[432]: acos abs tanh !0 -> asin inv cosh !0 [weakest assumption found: abs-le-pi2]") (var x real) (assume (<= (abs x) (/ pi 2))) (assume (nonzero (cosh x))) (ask (= (acos (abs (tanh x))) (asin (/ (cosh x))))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hc1 := Real.one_le_cosh r; refine ⟨by simp [AE.cosh_ofReal_ne_zero], ?_⟩; rw [AE.tanh_ofReal, AE.abs_ofReal, ← AE.cond_tanh_abs, AE.acos_ofReal (AE.cond_tanh_mem _).1 (AE.cond_tanh_mem _).2, AE.cosh_ofReal, AE.inv_ofReal, AE.asin_ofReal (by linarith [inv_nonneg.mpr (show (0:ℝ) ≤ Real.cosh r by linarith)]) (inv_le_one_of_one_le₀ hc1), AE.cond_arccos_tanh_abs]"))
sp-acj4-433-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]
Lean proof: included
(case sp-acj4-433-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [weakest assumption found: re-nonneg]") (var x complex) (assume (>= (re x) 0)) (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 true) (lean-proof "have hre : 0 ≤ x.re := (by simpa using h0.2); have hL := AE.cond_log_inv_of_re_nonneg hre; rw [hL] at h5 h6 ⊢; have hD : AE.atan.D (-AE.log x) := (AE.atan.D_iff _).mpr ⟨by rw [← AE.i_def]; exact h2.2, by rw [← AE.i_def]; exact h3.2⟩; exact ⟨⟨⟨h1.2, hD⟩, ⟨h1.2, h4.2⟩, hD⟩, rfl⟩"))
sp-acj4-433-condf
the two sides differ at every admissible point
witness (false): \(x = -2\)
SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]
Lean proof: included
(case sp-acj4-433-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[433]: atan neg log !0 -> atan log inv !0 [false under: negative]") (var x real) (assume (negative x)) (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 false) (witness false (x -2)) (lean-proof "exact AE.w2_c433 x hd0 h0 h1 h2 h3 h4 h5 h6"))
sp-acj4-442-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]
Lean proof: included
(case sp-acj4-442-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨y, hy, rfl⟩ := AE.cond_imaginary_exists h0.2; have hi : (AE.log (↑y * Complex.I)).im ≠ 0 := (by rw [AE.log_def, Complex.log_im, Ne, Complex.arg_eq_zero_iff]; simp [hy]); refine ⟨⟨⟨h1.2, h2.2⟩, ⟨h1.2, h2.2⟩, h3.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inr hi)]"))
sp-acj4-442-cond4
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]
Lean proof: included
(case sp-acj4-442-cond4 (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[442]: neg log log ?0 -> log inv log ?0 [weakest assumption found: integer]") (var x integer) (assume (nonzero x)) (assume (nonzero (log x))) (assume (nonzero (/ (log x)))) (ask (= (- (log (log x))) (log (/ (log x))))) (expect true) (lean-proof "obtain ⟨n, rfl⟩ := hd0; have hn : (n:ℂ) ≠ 0 := h0.2; have hn' : n ≠ 0 := (by exact_mod_cast hn); have hre : 0 ≤ (AE.log (n:ℂ)).re := (by rw [AE.log_def, Complex.log_re]; apply Real.log_nonneg; rw [Complex.norm_intCast]; exact_mod_cast Int.one_le_abs hn'); refine ⟨⟨⟨h1.1.1, h1.2⟩, ⟨h1.1.1, h1.2⟩, h2.2⟩, ?_⟩; rw [AE.cond_log_inv_of (Or.inl hre)]"))
sp-acj4-46-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-46-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[46]: * log 2 _0 -> log pow 2 _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (pow 2 x))) (ask (= (* (log 2) x) (log (pow 2 x)))) (expect true) (lean-proof "simp at h0; have hl := Real.log_pos one_lt_two; have hl2 := Real.log_two_lt_d9; have e : (x * Complex.log 2).im = x.im * Real.log 2 := (by rw [AE.cond_log_two_eq, Complex.mul_im, Complex.ofReal_im, Complex.ofReal_re]; ring); refine ⟨⟨two_ne_zero, h1.1.1, h1.2⟩, ?_⟩; rw [AE.cond_log_pow_of_im two_ne_zero (by rw [e]; nlinarith [Real.pi_pos]) (by rw [e]; nlinarith [Real.pi_pos]), mul_comm]"))
sp-acj4-5-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]
Lean proof: included
(case sp-acj4-5-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[5] + rules.json[3]: atanh abs _0 -> abs atanh _0 [weakest assumption found: abs-lt-1]") (var x real) (assume (< (abs x) 1)) (assume (!= (abs x) 1)) (assume (!= x 1)) (assume (!= x -1)) (ask (= (atanh (abs x)) (abs (atanh x)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : |r| < 1 := (by simpa [AE.abs_ofReal] using h0.2); have hr' := abs_lt.mp hr; refine ⟨by simp [AE.abs_ofReal, h2, h3]; exact ⟨by intro h; linarith, by intro h; have := congrArg Complex.re h; simp at this; linarith [abs_nonneg r]⟩, ?_⟩; rw [AE.abs_ofReal, AE.atanh_ofReal (by linarith [abs_nonneg r]) hr, AE.atanh_ofReal hr'.1 hr'.2, AE.abs_ofReal, AE.cond_artanh_abs]"))
sp-acj4-55-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-55-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[55]: * log _0 np.e -> log pow _0 np.e [weakest assumption found: positive]") (var x real) (assume (positive x)) (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 true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.cond_exp_one_eq, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]
Lean proof: included
(case sp-acj4-56-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [weakest assumption found: positive]") (var x real) (assume (positive x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect true) (lean-proof "obtain ⟨r, rfl⟩ := AE.IsReal.exists hd0; have hr : 0 < r := (by simpa using h0.2); refine ⟨⟨h1.2, h3.1.1, h3.2⟩, ?_⟩; rw [AE.pi_def, AE.cond_log_pow_ofReal hr, mul_comm]"))
sp-acj4-56-condf
the two sides differ at every admissible point
witness (false): \(x = i\)
SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]
Lean proof: included
(case sp-acj4-56-condf (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[56]: * log _0 np.pi -> log pow _0 np.pi [false under: imaginary]") (var x complex) (assume (imaginary x)) (assume (nonzero x)) (assume (or (nonzero x) (> (re pi) 0))) (assume (nonzero (pow x pi))) (ask (= (* (log x) pi) (log (pow x pi)))) (expect false) (witness false (x i)) (lean-proof "exact AE.w2_c56 x h0 h1 h2 h3"))
sp-acj4-9-cond
the two sides are equal at every admissible point
SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]
Lean proof: included
(case sp-acj4-9-cond (category simplipy-conditional) (note "SimpliPy acj-4 (MIT) rules_real.json[9]: log exp _0 -> _0 [weakest assumption found: im-principal]") (var x complex) (assume (and (> (im x) (- pi)) (<= (im x) pi))) (assume (nonzero (exp x))) (ask (= (log (exp x)) x)) (expect true) (lean-proof "simp at h0; exact ⟨Complex.exp_ne_zero _, AE.log_exp_of_im h0.1 h0.2⟩"))