← suite simplipy

simplipy-conditional

The rule under the weakest natural assumption that makes it true, or under one that makes it false everywhere.

Case set ba9dc4def822

casesympy bestsympy-asksympy-refinesympy-simplifywolfram best wolfram-fullsimplify wolfram-refine wolfram-simplify
sp-acj4-1-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-108-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-124-condf contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-127-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-128-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-128-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-129-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-130-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-131-condf contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-132-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-133-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-136-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-137-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-145-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-145-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-147-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-151-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-156-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-159-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-159-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-162-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-162-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-171-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-171-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-179-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-180-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-181-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-183-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-186-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-187-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-190-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-191-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-196-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-20-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-200-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-202-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-203-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-205-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-234-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-234-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-243-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-245-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-248-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-251-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-260-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-261-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-266-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-266-condf contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-267-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-267-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-283-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-287-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-289-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-29-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-29-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-334-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-335-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-336-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-372-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-373-cond contingentno verdict ✓no verdict ✓timeoutno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-376-cond2 trueno verdictno verdicttimeoutno verdictno verdictno verdictno verdictno verdict
sp-acj4-385-cond contingentno verdict ✓no verdict ✓timeoutno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-392-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-394-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-399-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-402-cond contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-403-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-403-condf contingentno verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓no verdict ✓
sp-acj4-412-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-416-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-417-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-422-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-424-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-430-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-430-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-432-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-433-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-433-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond4 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-46-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-5-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-55-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-9-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict

sp-acj4-1-cond

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arcsin\left(\left|x\right|\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \left|x\right| \neq 0\)
Claim
\(\displaystyle \frac{\left|x\right|}{x} \neq \frac{x}{\left|x\right|}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\arcsin\left(\tanh x\right)\right| \overset{?}{=} \arccos\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad e^{x} \neq 1,\quad e^{x} \neq -1\)
Claim
\(\displaystyle \left|\operatorname{artanh}\left(e^{x}\right)\right| \neq \operatorname{artanh}\left(e^{x}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 1\))

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i\)
Claim
\(\displaystyle \left|\cos\left(\arctan x\right)\right| \overset{?}{=} \cos\left(\arctan x\right)\)
Expected
contingent true at \(x = \frac{1}{2} \, i\); false at \(x = 2 \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cos x\right)\right| = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cosh x\right)\right| \overset{?}{=} \log\left(\cosh x\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi,\quad \sin x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\sin x\right)\right| = -\log\left(\sin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \tanh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\tanh x\right)\right| \neq -\log\left(\tanh x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left|x^{e^{1}}\right| = x^{e^{1}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left|x^{\pi}\right| = x^{\pi}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh\left(\operatorname{arsinh}\left(x\right)\right) \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \left|\tanh\left(\operatorname{arsinh}\left(x\right)\right)\right| \overset{?}{=} \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = 2 \, i\); false at \(x = \frac{1}{2} \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\cos\left(\arcsin x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\sin\left(\arccos x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \le 1,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) = \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) \neq \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) \overset{?}{=} \tanh x\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arccos x\right) \neq i,\quad \sinh\left(\arccos x\right) \neq -i,\quad \cosh\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arccos x\right)\right) = \arcsin\left(\tanh\left(\arccos x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq i,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq -i,\quad \cosh\left(\operatorname{arcosh}\left(x\right)\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\operatorname{arcosh}\left(x\right)\right)\right) = \arcsin\left(\tanh\left(\operatorname{arcosh}\left(x\right)\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arcsin x\right) \neq i,\quad \sinh\left(\arcsin x\right) \neq -i,\quad \cosh\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arcsin x\right)\right) = \arcsin\left(\tanh\left(\arcsin x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \neq 0,\quad \sinh\left(\log x\right) \neq i,\quad \sinh\left(\log x\right) \neq -i,\quad \cosh\left(\log x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\log x\right)\right) = \arcsin\left(\tanh\left(\log x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos\left(\sin x\right) \neq 0,\quad \tan\left(\sin x\right) \neq i,\quad \tan\left(\sin x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\sin x\right)\right) = \sin x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \cos\left(\tanh x\right) \neq 0,\quad \tan\left(\tanh x\right) \neq i,\quad \tan\left(\tanh x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i,\quad \cos\left(\arctan x\right) \neq 1,\quad \cos\left(\arctan x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\cos\left(\arctan x\right)\right) \neq \left|\operatorname{arsinh}\left(\frac{1}{x}\right)\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = \frac{1}{2} \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \sin\left(\arccos x\right) \neq 1,\quad \sin\left(\arccos x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\arccos x\right)\right) \neq \operatorname{arcosh}\left(\left|\frac{1}{x}\right|\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \sin\left(\tanh x\right) \neq 1,\quad \sin\left(\tanh x\right) \neq -1,\quad \cos\left(\tanh x\right) \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\tanh x\right)\right) = \operatorname{arsinh}\left(\tan\left(\tanh x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sinh\left(\left|x\right|\right) \neq \left|\sinh x\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \cos\left(\arcsin\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0,\quad \tan x \neq i,\quad \tan x \neq -i\)
Claim
\(\displaystyle \cos\left(\arctan\left(\tan x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \cos\left(\log\left(\frac{1}{x}\right)\right) = \cos\left(\log x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0\)
Claim
\(\displaystyle \cosh\left(\operatorname{arsinh}\left(\tan x\right)\right) = \left|\frac{1}{\cos x}\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 5\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 5\right)\right) = \frac{\log x}{5}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 7\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 7\right)\right) = \frac{\log x}{7}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle -\left|\arcsin x\right| = \arcsin\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1,\quad -\left|x\right| \neq 1,\quad -\left|x\right| \neq -1\)
Claim
\(\displaystyle -\left|\operatorname{artanh}\left(x\right)\right| = \operatorname{artanh}\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Re}\left(x\right)\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cos x\right) = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \neq 0,\quad \frac{1}{\cosh x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cosh x\right) \overset{?}{=} \log\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{2} \neq x \, x\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{6} \neq x^{6}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{8} = x^{8}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x = \log\left(x^{3}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x \neq \log\left(x^{3}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{e^{1}} = e^{e^{1} \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{\pi} = e^{\pi \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{x} = e^{x \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, -5\right) \overset{?}{=} \left(\cosh x\right)^{-\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, 5\right) \overset{?}{=} \left(\cosh x\right)^{\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad e^{x} \in \mathbb{R},\quad e^{x} \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, -3\right) = e^{\frac{x}{-3}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad e^{x} \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, 3\right) \overset{?}{=} e^{\frac{x}{3}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \sin\left(\left|\arcsin x\right|\right) = \left|\cos\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\left|\operatorname{artanh}\left(x\right)\right|\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sin\left(\arccos\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\operatorname{artanh}\left(\left|x\right|\right)\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\left|\arcsin x\right|\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\left|\arcsin x\right|\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1,\quad \cos\left(\arccos\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arccos\left(\left|x\right|\right)\right) = \left|\tan\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\arcsin\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arcsin\left(\left|x\right|\right)\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\left|\operatorname{arsinh}\left(x\right)\right|\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\operatorname{arsinh}\left(\left|x\right|\right)\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{R},\quad x \le 1\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\left|\tanh x\right|\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) = \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) \neq \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad 2^{x} \neq 0\)
Claim
\(\displaystyle \log 2 \, x = \log\left(2^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \operatorname{artanh}\left(\left|x\right|\right) = \left|\operatorname{artanh}\left(x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0,\quad x^{e^{1}} \neq 0\)
Claim
\(\displaystyle \log x \, e^{1} = \log\left(x^{e^{1}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi = \log\left(x^{\pi}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi \neq \log\left(x^{\pi}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0\)
Claim
\(\displaystyle \log\left(e^{x}\right) = x\)
Expected
true equal at every admissible point

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

casesympy bestsympy-asksympy-refinesympy-simplifywolfram best wolfram-fullsimplify wolfram-refine wolfram-simplify
sp-acj4-1-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-108-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-124-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-127-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-128-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-128-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-129-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-130-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-131-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-132-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-133-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-136-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-137-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-145-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-145-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-147-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-151-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-156-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-159-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-159-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-162-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-162-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-171-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-171-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-179-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-180-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-181-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-183-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-186-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-187-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-190-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-191-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-196-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-20-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-200-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-202-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-203-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-205-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-234-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-234-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-243-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-245-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-248-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-251-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-260-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-261-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-266-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-266-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-267-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-267-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-283-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-287-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-289-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-29-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-29-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-334-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-335-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-336-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-372-cond contingentno verdictno verdicttimeoutno verdictno verdictno verdictno verdictno verdict
sp-acj4-373-cond contingentno verdictno verdicttimeoutno verdictno verdictno verdictno verdictno verdict
sp-acj4-376-cond2 trueno verdictno verdicttimeoutno verdictno verdictno verdictno verdictno verdict
sp-acj4-385-cond contingentno verdictno verdicttimeoutno verdictno verdictno verdictno verdictno verdict
sp-acj4-392-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-394-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-399-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-402-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-403-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-403-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-412-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-416-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-417-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-422-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-424-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-430-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-430-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-432-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-433-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-433-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond4 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-46-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-5-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-55-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-9-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict

sp-acj4-1-cond

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arcsin\left(\left|x\right|\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \left|x\right| \neq 0\)
Claim
\(\displaystyle \frac{\left|x\right|}{x} \neq \frac{x}{\left|x\right|}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\arcsin\left(\tanh x\right)\right| \overset{?}{=} \arccos\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad e^{x} \neq 1,\quad e^{x} \neq -1\)
Claim
\(\displaystyle \left|\operatorname{artanh}\left(e^{x}\right)\right| \neq \operatorname{artanh}\left(e^{x}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 1\))

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i\)
Claim
\(\displaystyle \left|\cos\left(\arctan x\right)\right| \overset{?}{=} \cos\left(\arctan x\right)\)
Expected
contingent true at \(x = \frac{1}{2} \, i\); false at \(x = 2 \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cos x\right)\right| = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cosh x\right)\right| \overset{?}{=} \log\left(\cosh x\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi,\quad \sin x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\sin x\right)\right| = -\log\left(\sin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \tanh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\tanh x\right)\right| \neq -\log\left(\tanh x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left|x^{e^{1}}\right| = x^{e^{1}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left|x^{\pi}\right| = x^{\pi}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh\left(\operatorname{arsinh}\left(x\right)\right) \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \left|\tanh\left(\operatorname{arsinh}\left(x\right)\right)\right| \overset{?}{=} \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = 2 \, i\); false at \(x = \frac{1}{2} \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\cos\left(\arcsin x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\sin\left(\arccos x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \le 1,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) = \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) \neq \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) \overset{?}{=} \tanh x\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arccos x\right) \neq i,\quad \sinh\left(\arccos x\right) \neq -i,\quad \cosh\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arccos x\right)\right) = \arcsin\left(\tanh\left(\arccos x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq i,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq -i,\quad \cosh\left(\operatorname{arcosh}\left(x\right)\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\operatorname{arcosh}\left(x\right)\right)\right) = \arcsin\left(\tanh\left(\operatorname{arcosh}\left(x\right)\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arcsin x\right) \neq i,\quad \sinh\left(\arcsin x\right) \neq -i,\quad \cosh\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arcsin x\right)\right) = \arcsin\left(\tanh\left(\arcsin x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \neq 0,\quad \sinh\left(\log x\right) \neq i,\quad \sinh\left(\log x\right) \neq -i,\quad \cosh\left(\log x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\log x\right)\right) = \arcsin\left(\tanh\left(\log x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos\left(\sin x\right) \neq 0,\quad \tan\left(\sin x\right) \neq i,\quad \tan\left(\sin x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\sin x\right)\right) = \sin x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \cos\left(\tanh x\right) \neq 0,\quad \tan\left(\tanh x\right) \neq i,\quad \tan\left(\tanh x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i,\quad \cos\left(\arctan x\right) \neq 1,\quad \cos\left(\arctan x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\cos\left(\arctan x\right)\right) \neq \left|\operatorname{arsinh}\left(\frac{1}{x}\right)\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = \frac{1}{2} \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \sin\left(\arccos x\right) \neq 1,\quad \sin\left(\arccos x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\arccos x\right)\right) \neq \operatorname{arcosh}\left(\left|\frac{1}{x}\right|\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \sin\left(\tanh x\right) \neq 1,\quad \sin\left(\tanh x\right) \neq -1,\quad \cos\left(\tanh x\right) \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\tanh x\right)\right) = \operatorname{arsinh}\left(\tan\left(\tanh x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sinh\left(\left|x\right|\right) \neq \left|\sinh x\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \cos\left(\arcsin\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0,\quad \tan x \neq i,\quad \tan x \neq -i\)
Claim
\(\displaystyle \cos\left(\arctan\left(\tan x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \cos\left(\log\left(\frac{1}{x}\right)\right) = \cos\left(\log x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0\)
Claim
\(\displaystyle \cosh\left(\operatorname{arsinh}\left(\tan x\right)\right) = \left|\frac{1}{\cos x}\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 5\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 5\right)\right) = \frac{\log x}{5}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 7\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 7\right)\right) = \frac{\log x}{7}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle -\left|\arcsin x\right| = \arcsin\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1,\quad -\left|x\right| \neq 1,\quad -\left|x\right| \neq -1\)
Claim
\(\displaystyle -\left|\operatorname{artanh}\left(x\right)\right| = \operatorname{artanh}\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Re}\left(x\right)\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cos x\right) = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \neq 0,\quad \frac{1}{\cosh x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cosh x\right) \overset{?}{=} \log\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{2} \neq x \, x\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{6} \neq x^{6}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{8} = x^{8}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x = \log\left(x^{3}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x \neq \log\left(x^{3}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{e^{1}} = e^{e^{1} \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{\pi} = e^{\pi \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{x} = e^{x \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, -5\right) \overset{?}{=} \left(\cosh x\right)^{-\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, 5\right) \overset{?}{=} \left(\cosh x\right)^{\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad e^{x} \in \mathbb{R},\quad e^{x} \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, -3\right) = e^{\frac{x}{-3}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad e^{x} \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, 3\right) \overset{?}{=} e^{\frac{x}{3}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \sin\left(\left|\arcsin x\right|\right) = \left|\cos\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\left|\operatorname{artanh}\left(x\right)\right|\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sin\left(\arccos\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\operatorname{artanh}\left(\left|x\right|\right)\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\left|\arcsin x\right|\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\left|\arcsin x\right|\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1,\quad \cos\left(\arccos\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arccos\left(\left|x\right|\right)\right) = \left|\tan\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\arcsin\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arcsin\left(\left|x\right|\right)\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\left|\operatorname{arsinh}\left(x\right)\right|\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\operatorname{arsinh}\left(\left|x\right|\right)\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{R},\quad x \le 1\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\left|\tanh x\right|\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) = \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) \neq \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad 2^{x} \neq 0\)
Claim
\(\displaystyle \log 2 \, x = \log\left(2^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \operatorname{artanh}\left(\left|x\right|\right) = \left|\operatorname{artanh}\left(x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0,\quad x^{e^{1}} \neq 0\)
Claim
\(\displaystyle \log x \, e^{1} = \log\left(x^{e^{1}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi = \log\left(x^{\pi}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi \neq \log\left(x^{\pi}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0\)
Claim
\(\displaystyle \log\left(e^{x}\right) = x\)
Expected
true equal at every admissible point

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

casesympy bestsympy-asksympy-refinesympy-simplifywolfram best wolfram-fullsimplify wolfram-refine wolfram-simplify
sp-acj4-1-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-108-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-124-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-127-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-128-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-128-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-129-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-130-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-131-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-132-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-133-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-136-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-137-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-145-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-145-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-147-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-151-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-156-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-159-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-159-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-162-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-162-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-171-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-171-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-179-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-180-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-181-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-183-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-186-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-187-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-190-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-191-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-196-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-20-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-200-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-202-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-203-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-205-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-234-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-234-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-243-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-245-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-248-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-251-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-260-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-261-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-266-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-266-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-267-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-267-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-283-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-287-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-289-cond truetrue ✓no verdicttrue ✓no verdictno verdictno verdictno verdictno verdict
sp-acj4-29-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-29-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-334-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-335-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-336-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-344-cond2 truetrue ✓true ✓true ✓true ✓true ✓true ✓true ✓true ✓
sp-acj4-372-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-373-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-376-cond2 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-385-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-392-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-394-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-399-cond truetrue ✓no verdictno verdicttrue ✓no verdictno verdictno verdictno verdict
sp-acj4-402-cond contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-403-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-403-condf contingentno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-412-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-416-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-417-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-420-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-422-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-424-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-428-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-430-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-430-cond2 trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-432-cond3 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-433-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓true ✓true ✓
sp-acj4-433-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-442-cond4 trueno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-46-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-5-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict
sp-acj4-55-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-cond truetrue ✓no verdictno verdicttrue ✓true ✓true ✓true ✓true ✓
sp-acj4-56-condf falseno verdictno verdictno verdictno verdictno verdictno verdictno verdictno verdict
sp-acj4-9-cond trueno verdictno verdictno verdictno verdicttrue ✓true ✓no verdictno verdict

sp-acj4-1-cond

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arcsin\left(\left|x\right|\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \left|x\right| \neq 0\)
Claim
\(\displaystyle \frac{\left|x\right|}{x} \neq \frac{x}{\left|x\right|}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\arcsin\left(\tanh x\right)\right| \overset{?}{=} \arccos\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad e^{x} \neq 1,\quad e^{x} \neq -1\)
Claim
\(\displaystyle \left|\operatorname{artanh}\left(e^{x}\right)\right| \neq \operatorname{artanh}\left(e^{x}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 1\))

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\cos\left(\arcsin x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i\)
Claim
\(\displaystyle \left|\cos\left(\arctan x\right)\right| \overset{?}{=} \cos\left(\arctan x\right)\)
Expected
contingent true at \(x = \frac{1}{2} \, i\); false at \(x = 2 \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cos x\right)\right| = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\cosh x\right)\right| \overset{?}{=} \log\left(\cosh x\right)\)
Expected
contingent true at \(x = 2 \, \pi \, i\); false at \(x = i\)

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi,\quad \sin x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\sin x\right)\right| = -\log\left(\sin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \tanh x \neq 0\)
Claim
\(\displaystyle \left|\log\left(\tanh x\right)\right| \neq -\log\left(\tanh x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left|x^{e^{1}}\right| = x^{e^{1}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left|x^{\pi}\right| = x^{\pi}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| = \cos\left(\arcsin x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 1\)
Claim
\(\displaystyle \left|\sin\left(\arccos x\right)\right| \neq \cos\left(\arcsin x\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh\left(\operatorname{arsinh}\left(x\right)\right) \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \left|\tanh\left(\operatorname{arsinh}\left(x\right)\right)\right| \overset{?}{=} \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = 2 \, i\); false at \(x = \frac{1}{2} \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\cos\left(\arcsin x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \arccos\left(\sin\left(\arccos x\right)\right) = \left|\arcsin x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \le 1,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\tanh\left(\left|x\right|\right)\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) = \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0\)
Claim
\(\displaystyle \operatorname{arcosh}\left(\operatorname{surd}\left(x, 5\right)\right) \neq \operatorname{arcosh}\left(x^{\frac{1}{5}}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) \overset{?}{=} \tanh x\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{1}{2} + \frac{\pi}{2} \, i\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arcsin\left(\sin\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arccos x\right) \neq i,\quad \sinh\left(\arccos x\right) \neq -i,\quad \cosh\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arccos x\right)\right) = \arcsin\left(\tanh\left(\arccos x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq i,\quad \sinh\left(\operatorname{arcosh}\left(x\right)\right) \neq -i,\quad \cosh\left(\operatorname{arcosh}\left(x\right)\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\operatorname{arcosh}\left(x\right)\right)\right) = \arcsin\left(\tanh\left(\operatorname{arcosh}\left(x\right)\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \sinh\left(\arcsin x\right) \neq i,\quad \sinh\left(\arcsin x\right) \neq -i,\quad \cosh\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\arcsin x\right)\right) = \arcsin\left(\tanh\left(\arcsin x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \neq 0,\quad \sinh\left(\log x\right) \neq i,\quad \sinh\left(\log x\right) \neq -i,\quad \cosh\left(\log x\right) \neq 0\)
Claim
\(\displaystyle \arctan\left(\sinh\left(\log x\right)\right) = \arcsin\left(\tanh\left(\log x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos\left(\sin x\right) \neq 0,\quad \tan\left(\sin x\right) \neq i,\quad \tan\left(\sin x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\sin x\right)\right) = \sin x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \cos\left(\tanh x\right) \neq 0,\quad \tan\left(\tanh x\right) \neq i,\quad \tan\left(\tanh x\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(\tan\left(\tanh x\right)\right) = \tanh x\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq i,\quad x \neq -i,\quad \cos\left(\arctan x\right) \neq 1,\quad \cos\left(\arctan x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\cos\left(\arctan x\right)\right) \neq \left|\operatorname{arsinh}\left(\frac{1}{x}\right)\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = \frac{1}{2} \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \sin\left(\arccos x\right) \neq 1,\quad \sin\left(\arccos x\right) \neq -1,\quad x \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\arccos x\right)\right) \neq \operatorname{arcosh}\left(\left|\frac{1}{x}\right|\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cosh x \neq 0,\quad \sin\left(\tanh x\right) \neq 1,\quad \sin\left(\tanh x\right) \neq -1,\quad \cos\left(\tanh x\right) \neq 0\)
Claim
\(\displaystyle \operatorname{artanh}\left(\sin\left(\tanh x\right)\right) = \operatorname{arsinh}\left(\tan\left(\tanh x\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sinh\left(\left|x\right|\right) \neq \left|\sinh x\right|\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \cos\left(\arcsin\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0,\quad \tan x \neq i,\quad \tan x \neq -i\)
Claim
\(\displaystyle \cos\left(\arctan\left(\tan x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \cos\left(\log\left(\frac{1}{x}\right)\right) = \cos\left(\log x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad \cos x \neq 0\)
Claim
\(\displaystyle \cosh\left(\operatorname{arsinh}\left(\tan x\right)\right) = \left|\frac{1}{\cos x}\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x^{x}} = \frac{1}{x}^{x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 5\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 5\right)\right) = \frac{\log x}{5}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad x \in \mathbb{R},\quad \operatorname{surd}\left(x, 7\right) \neq 0,\quad x \neq 0\)
Claim
\(\displaystyle \log\left(\operatorname{surd}\left(x, 7\right)\right) = \frac{\log x}{7}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle -\left|\arcsin x\right| = \arcsin\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1,\quad -\left|x\right| \neq 1,\quad -\left|x\right| \neq -1\)
Claim
\(\displaystyle -\left|\operatorname{artanh}\left(x\right)\right| = \operatorname{artanh}\left(-\left|x\right|\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Re}\left(x\right)\right| < \frac{\pi}{2},\quad \cos x \neq 0,\quad \frac{1}{\cos x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cos x\right) = \log\left(\frac{1}{\cos x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \neq 0,\quad \frac{1}{\cosh x} \neq 0\)
Claim
\(\displaystyle -\log\left(\cosh x\right) \overset{?}{=} \log\left(\frac{1}{\cosh x}\right)\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle -\sin\left(\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle -\tan\left(\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{2} \neq x \, x\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{6} \neq x^{6}\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \left|x\right|^{8} = x^{8}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x = \log\left(x^{3}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x^{3} \neq 0\)
Claim
\(\displaystyle 3 \, \log x \neq \log\left(x^{3}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{e^{1}} = e^{e^{1} \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{\pi} = e^{\pi \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0\)
Claim
\(\displaystyle \left(e^{x}\right)^{x} = e^{x \, x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \frac{1}{x} \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x \neq 0 \lor \operatorname{Re}\left(-x\right) > 0\)
Claim
\(\displaystyle \frac{1}{x}^{x} = x^{-x}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, -5\right) \overset{?}{=} \left(\cosh x\right)^{-\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad \cosh x \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(\cosh x, 5\right) \overset{?}{=} \left(\cosh x\right)^{\frac{1}{5}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{C},\quad \left|\operatorname{Im}\left(x\right)\right| < \pi,\quad e^{x} \in \mathbb{R},\quad e^{x} \neq 0\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, -3\right) = e^{\frac{x}{-3}}\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) > 0,\quad e^{x} \in \mathbb{R}\)
Claim
\(\displaystyle \operatorname{surd}\left(e^{x}, 3\right) \overset{?}{=} e^{\frac{x}{3}}\)
Expected
contingent true at \(x = 1\); false at \(x = \frac{1}{2} + \pi \, i\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1\)
Claim
\(\displaystyle \sin\left(\left|\arcsin x\right|\right) = \left|\cos\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\left|\operatorname{artanh}\left(x\right)\right|\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R}\)
Claim
\(\displaystyle \sin\left(\arccos\left(\sin x\right)\right) = \left|\cos x\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \sin\left(\operatorname{artanh}\left(\left|x\right|\right)\right) \overset{?}{=} \left|\sin\left(\operatorname{artanh}\left(x\right)\right)\right|\)
Expected
contingent true at \(x = 0\); false at \(x = \frac{999}{1000}\)

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) = \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \frac{1}{x} \neq 0\)
Claim
\(\displaystyle \sin\left(-\log x\right) \overset{?}{=} \sin\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
contingent true at \(x = -e^{\frac{\pi}{2}}\); false at \(x = -1\)

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\left|\arcsin x\right|\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\left|\arcsin x\right|\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le 1,\quad \cos\left(\arccos\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arccos x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arccos\left(\left|x\right|\right)\right) = \left|\tan\left(\arccos x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \cos\left(\arcsin\left(\left|x\right|\right)\right) \neq 0,\quad \cos\left(\arcsin x\right) \neq 0\)
Claim
\(\displaystyle \tan\left(\arcsin\left(\left|x\right|\right)\right) = \left|\tan\left(\arcsin x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) = \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad \cos\left(-\log x\right) \neq 0,\quad \frac{1}{x} \neq 0,\quad \cos\left(\log\left(\frac{1}{x}\right)\right) \neq 0\)
Claim
\(\displaystyle \tan\left(-\log x\right) \neq \tan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -1\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\left|\operatorname{arsinh}\left(x\right)\right|\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \frac{1}{x} \neq i,\quad \frac{1}{x} \neq -i\)
Claim
\(\displaystyle \tanh\left(\operatorname{arsinh}\left(\left|x\right|\right)\right) \neq \cos\left(\arctan\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = 2 \, i\))

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

Given
\(x \in \mathbb{R},\quad x \le 1\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x \ge 0,\quad x \le \pi\)
Claim
\(\displaystyle \arctan\left(\sinh x\right) = \arcsin\left(\tanh x\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(x\right) > 0,\quad x^{x} \neq 0\)
Claim
\(\displaystyle \log x \, x = \log\left(x^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| \le \frac{\pi}{2},\quad \cosh x \neq 0\)
Claim
\(\displaystyle \arccos\left(\left|\tanh x\right|\right) = \arcsin\left(\frac{1}{\cosh x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Re}\left(x\right) \ge 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) = \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x < 0,\quad x \neq 0,\quad -\log x \neq i,\quad -\log x \neq -i,\quad \frac{1}{x} \neq 0,\quad \log\left(\frac{1}{x}\right) \neq i,\quad \log\left(\frac{1}{x}\right) \neq -i\)
Claim
\(\displaystyle \arctan\left(-\log x\right) \neq \arctan\left(\log\left(\frac{1}{x}\right)\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = -2\))

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{Z},\quad x \neq 0,\quad \log x \neq 0,\quad \frac{1}{\log x} \neq 0\)
Claim
\(\displaystyle -\log\left(\log x\right) = \log\left(\frac{1}{\log x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad 2^{x} \neq 0\)
Claim
\(\displaystyle \log 2 \, x = \log\left(2^{x}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad \left|x\right| < 1,\quad \left|x\right| \neq 1,\quad x \neq 1,\quad x \neq -1\)
Claim
\(\displaystyle \operatorname{artanh}\left(\left|x\right|\right) = \left|\operatorname{artanh}\left(x\right)\right|\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(e^{1}\right) > 0,\quad x^{e^{1}} \neq 0\)
Claim
\(\displaystyle \log x \, e^{1} = \log\left(x^{e^{1}}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{R},\quad x > 0,\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi = \log\left(x^{\pi}\right)\)
Expected
true equal at every admissible point

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

Given
\(x \in \mathbb{C},\quad x \in i\mathbb{R},\quad x \neq 0,\quad x \neq 0 \lor \operatorname{Re}\left(\pi\right) > 0,\quad x^{\pi} \neq 0\)
Claim
\(\displaystyle \log x \, \pi \neq \log\left(x^{\pi}\right)\)
Expected
false unequal at every admissible point (e.g. at \(x = i\))

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

Given
\(x \in \mathbb{C},\quad \operatorname{Im}\left(x\right) > -\pi \land \operatorname{Im}\left(x\right) \le \pi,\quad e^{x} \neq 0\)
Claim
\(\displaystyle \log\left(e^{x}\right) = x\)
Expected
true equal at every admissible point

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⟩"))